Ulysse

Members
  • Content count

    10
  • Joined

  • Last visited

  • Days Won

    1

Ulysse last won the day on June 13 2018

Ulysse had the most liked content!

Community Reputation

1 Neutral

About Ulysse

  • Rank
    Member

Robot Information

  • Company Name
    CEA Tech

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Ulysse

    Cannot sync with NTP server

    I cannot have access to the NTP server but here is what I know about it: OS is CentOS Linux release 7.2 NTP version is 4.2.6p5 It uses the `time.my.company.fr` server as a reference, which is connected to the Internet Do you have specific informations you want me to ask for? Thanks Ian.
  2. Ulysse

    Moveit Trajectory Failed

    Haha I think I did not explain myself very well. The `date +%s` command is to get the current clock value of your workstation at a given time. The number is big because it is the number of seconds elapsed since 1970 (we call it epoch). When Sawyer sends a joint_state message, it calls it under the hood and use it to fill the `header.stamp.secs` message (the `header.stamp.nsecs` message is filled with the result of command `date +%N` but we're not really interested in this one yet). For short, just run the following command and post the output: date +%s & rostopic echo -n 1 /robot/joint_states/header/stamp/secs To speed things up I also want you to execute the following command: clockdiff -o <ip>.<adress>.<of>.<sawyer> # Be careful: IP address of Sawyer, not NTP server!
  3. Ulysse

    Cannot sync with NTP server

    Sorry I was confusing, my examples using `ntpdate` and `clockdiff` were to check clock offsets between my workstation and the Sawyer. For clarity (all IP addresses are configured statically): NTP server: 192.168.212.22 Sawyer: 192.168.212.60 Workstation (Ubuntu 16.04 LTS virtual machine running under Oracle VirtualBox on Windows 7 Enterprise): 192.168.212.160 Content of my workstation's `/etc/ntp.conf` file: # ntp.conf: Managed by puppet. # # Enable next tinker options: # panic - keep ntpd from panicking in the event of a large clock skew # when a VM guest is suspended and resumed; # stepout - allow ntpd change offset faster tinker panic 0 disable monitor # Permit time synchronization with our time source, but do not # permit the source to query or modify the service on this system. restrict -4 default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery restrict 127.0.0.1 restrict ::1 # Set up servers for ntpd with next options: # server - IP address or DNS name of upstream NTP server # iburst - allow send sync packages faster if upstream unavailable # prefer - select preferrable server # minpoll - set minimal update frequency # maxpoll - set maximal update frequency server 192.168.212.22 iburst prefer server 10.8.113.254 iburst server time.my.company.fr iburst # Driftfile. driftfile /var/lib/ntp/drift Some outputs from my workstation: user@workstation:~$ ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== 192.168.212.22 132.166.192.1 3 u 32 64 0 0.000 0.000 0.000 +10.8.113.254 192.168.8.2 3 u 4 64 7 1.117 4.700 10.553 *my.company 195.220.94.163 2 u 3 64 7 1.154 -2.642 11.157 user@workstation:~$ ntpdate -q 192.168.212.22 server 192.168.212.22, stratum 3, offset -0.062119, delay 0.02606 13 Jun 09:37:19 ntpdate[2368]: no server suitable for synchronization found user@workstation:~$ ntpdate -q 192.168.212.60 server 192.168.212.60, stratum 0, offset 0.000000, delay 0.00000 13 Jun 09:38:24 ntpdate[2373]: no server suitable for synchronization found user@workstation:~$ clockdiff -o 192.168.212.60 ...... host=192.168.212.60 rtt=177(265)ms/0ms delta=-17952260ms/-17952260ms Wed Jun 13 09:38:58 2018 Content of Sawyer's FSM: Hostname: 02170CP00029 IP type: Static IP IP Address*: 192.168.212.60 IP Netmask*: 255.255.252.0 IP Gateway*: 192.168.215.254 # That is a dummy one as there is no gateway configured on my network DNS: # Empty NTP Servers: 192.168.212.22 ROS Naming Type: ROS_IP Timezone: Europe/Paris Let me know if you need further information. Thanks Ian.
  4. Ulysse

    Moveit Trajectory Failed

    Just to be sure the two are in sync, can you echo the `robot/joint_states` topic and look for the timestamp? When you compare it to your workstation computer's using the `date +%s` command, the two should not be off by more than a few seconds. For more precise results you could install the `clockdiff` command (package `iputils-clockdiff` on Ubuntu) and use it to check the clocks offset : `clockdiff -o <ip>.<of>.<your>.<sawyer>` Let me know
  5. Ulysse

    Cannot sync with NTP server

    It is an enterprise network on a VLAN, using a separate IP address range: 192.168.212.0/22. There is no internet access as no gateway has been configured (FSM won't let me leave the field empty so I have to type a dummy one). Lastly there is a NTP server on the network whose IP address is 192.168.212.22. I know it is working as my workstation computer is in sync with it. I double-checked the timezone in the FSM and it IS set to Europe/Paris. But I don't think this really matters as ROS timestamps are in nanoseconds since epoch, which is timezone independent. Furthermore the offset isn't exactly 5 hours (I know I wrote 6 earlier on, my bad), it is 5 hours minus ~40 seconds. Thanks for your help.
  6. Ulysse

    Cannot sync with NTP server

    Please, I've been pulling my hair out on this for two weeks, obviously I tried everything that's on the tutorial. I'm sorry for being rude, I totally understand that you need to post the obvious solutions for other users that might come here. But in the meantime, can you also provide me with a real support ? My issue is not trivial and has been blocking my work for weeks... As a sign of goodwill I tried again the solution you proposed : it still isn't working, the offset keeps oscillating around (minus) 5 hours.
  7. Ulysse

    Cannot sync with NTP server

    Hi, I am having troubles connecting my Sawyer to a local NTP server. I have a local NTP server on my network that I know to be working : I can query it using some Linux machine and get offset, jitter, etc. I want to connect Sawyer to it so that it is in sync with my development computer (otherwise I can't use MoveIt! nor tf, pretty embarrassing...) I followed the Time and NTP tutorial, booted Sawyer into the FSM, replaced the NTP pool list with the IP address of my NTP server and rebooted into the SDK. However it didn't work, timestamps published by the robot are still off by about 6 hours. For completeness: The robot Intera version 5.2.2 The development computer Intera version is 5.2 I work in France so I am on GMT+2 timezone The `ntpdate` command does not work, it raises the error: server 192.168.212.60, stratum 0, offset 0.000000, delay 0.00000 11 Jun 10:28:25 ntpdate[4829]: no server suitable for synchronization found The `clockdiff` command works and outputs the above offset: host=192.168.212.60 rtt=562(280)ms/0ms delta=-17953355ms/-17953355ms Mon Jun 11 10:54:02 2018 I spent some time on the FSM trying to get this working and I might have disrupted some parameters. For instance, the `ntpdate` was working at first but it no longer does. How can I investigate on why is the robot not connecting to the server ? Normally it should burst on it at boot time as the offset is way bigger than 17 minutes. Thanks for your help.
  8. Ulysse

    Execute Trajectory using MoveIt!

    It works! At least some part of it does. For some reason I wasn't able to set up a local NTP server but I found a workaround using the faketime library. So now I am able to plan a trajectory using the Rviz GUI and have it executed by the robot. However I am still out of luck for the MoveIt! python interface tutorial. Everything goes fine until I reach the line: print robot.get_current_state() Then I get the same result as before: [ WARN] [1527149047.023091673]: Joint values for monitored state are requested but the full state is not known joint_state: header: seq: 0 stamp: secs: 0 nsecs: 0 frame_id: "/base" name: [right_j0, head_pan, right_j1, right_j2, right_j3, right_j4, right_j5, right_j6] position: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] velocity: [] effort: [] multi_dof_joint_state: header: seq: 0 stamp: secs: 0 nsecs: 0 frame_id: "/base" joint_names: [] transforms: [] twist: [] wrench: [] attached_collision_objects: [] is_diff: False I don't know if this might be an issue but in the above there is an "head_pan" joint that doesn't get fed by the "/robot/joint_states" topic.
  9. Ulysse

    Execute Trajectory using MoveIt!

    Thanks for your help Ian. Unfortunately I am not in any of the cases you spotted : My laptop and the robot are connected to the same network via ethernet. I am not using any tool on the robot (only the camera on the hand). I can see using rqt_graph that both the realtime_loop and moveit nodes are connected to the same /robot/joint_states topic. However in the meantime I kept investigating and I think I found where the problem comes from : my laptop clock and the robot clock are completely out of sync (by about 5 hours). The logs are not very explicit but I don't think MoveIt! is complaining about not receiving data, I think it is complaining about not receiving RECENT data (because obviously 5 hours > 1 second). The solution might then be to set a list of valid NTP servers in the FSM (which I am not able to test because my sawyer is not connected to the Internet).
  10. Ulysse

    Execute Trajectory using MoveIt!

    Hi all, I am facing an issue trying to use the MoveIt! package to control the Sawyer. I followed all tutorials on how to set up ROS Kinetic, the Sawyer SDK packages and the MoveIt! package. I am know trying to work my way through the MoveIt tutorial. I am able to successfully load the robot inside Rviz, move the end effector in the interface and plan a trajectory. However when I try to execute it, Rviz shows a "failed" message and in the terminal output I can read : Failed to validate trajectory: couldn't receive full current joint state within 1s I also tried to use MoveIt! through the Python interface but when I execute the following : import sys import copy import rospy import moveit_commander import moveit_msgs.msg import geometry_msgs.msg from std_msgs.msg import String moveit_commander.roscpp_initialize(sys.argv) rospy.init_node('move_group_python_interface_tutorial', anonymous=True) robot = moveit_commander.RobotCommander() scene = moveit_commander.PlanningSceneInterface() group = moveit_commander.MoveGroupCommander("right_arm") display_trajectory_publisher = rospy.Publisher('/move_group/display_planned_path', moveit_msgs.msg.DisplayTrajectory, queue_size=20) print "============ Reference frame: %s" % group.get_planning_frame() print "============ End effector: %s" % group.get_end_effector_link() print "============ Robot Groups:" print robot.get_group_names() print "============ Printing robot state" print robot.get_current_state() print "============" ... I get something like : ============ Reference frame: /base ============ End effector: right_hand ============ Robot Groups: ['right_arm'] ============ Printing robot state [ WARN] [1526377733.002742750]: Joint values for monitored state are requested but the full state is not known joint_state: header: seq: 0 stamp: secs: 0 nsecs: 0 frame_id: "/base" name: [right_j0, head_pan, right_j1, right_j2, right_j3, right_j4, right_j5, right_j6] position: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] velocity: [] effort: [] multi_dof_joint_state: header: seq: 0 stamp: secs: 0 nsecs: 0 frame_id: "/base" joint_names: [] transforms: [] twist: [] wrench: [] attached_collision_objects: [] is_diff: False ============ This is basically the same problem as in this ROS Q&A question : MoveIt: troubles with joint values Unfortunately this question did not get any useful answer. The weird thing is that the joint state is actually published, when I echo the /robot/joint_states topic I can see the values being updated : header: seq: 600867 stamp: secs: 1526364559 nsecs: 890697828 frame_id: '' name: [head_pan, right_j0, right_j1, right_j2, right_j3, right_j4, right_j5, right_j6, torso_t0] position: [-4.0742021484375, -0.2243544921875, -1.1203125, 0.4582724609375, 2.05134375, -0.29490625, 0.69954296875, -4.114162109375, 0.0] velocity: [-0.001, -0.001, -0.001, -0.001, -0.001, -0.001, -0.001, -0.001, 0.0] effort: [-0.012, 0.052, -20.068, -1.06, -5.996, 0.572, 0.104, -0.284, 0.0] And when I query informations about the /robot/joint_states topic, I can see that both the /realtime_loop and /move_group nodes are publishing/subscribing to it : Type: sensor_msgs/JointState Publishers: * /realtime_loop (http://192.168.212.60:42358/) Subscribers: * /robot_state_publisher (http://192.168.212.60:38760/) * /robot/environment_server (http://192.168.212.60:59368/) * /calibrate_arm (http://192.168.212.60:57953/) * /PositionKinematicsNode_right (http://192.168.212.60:56399/) * /JointMotionPathNode_right (http://192.168.212.60:58612/) * /motion_controller (http://192.168.212.60:37187/) * /sdk_position_w_id_joint_trajectory_action_server_right (http://192.168.212.160:37229/) * /move_group (http://192.168.212.160:43623/) Any idea of what is going on or how I can further investigate the error ? Thanks for your help.