Difference between revisions of "ROS2"

From ElphelWiki
Jump to: navigation, search
(Test Talker and Listener)
(ROS2 on Zynq)
Line 8: Line 8:
  
 
===Other links===
 
===Other links===
 +
* [http://design.ros2.org/articles/ros_on_dds.html ROS on DDS]
 
* [http://www.eprosima.com/index.php/resources-all/performance/40-eprosima-fast-rtps-performance FastRTPS benchmarks]
 
* [http://www.eprosima.com/index.php/resources-all/performance/40-eprosima-fast-rtps-performance FastRTPS benchmarks]
 
* [http://docs.eprosima.com/en/latest/advanced.html FastRTPS max message size]
 
* [http://docs.eprosima.com/en/latest/advanced.html FastRTPS max message size]

Revision as of 10:04, 6 December 2018

GitHub

https://github.com/bmwcarit/meta-ros.git

https://github.com/erlerobot/meta-ros2 ?

ROS2 on Zynq

Cross-compiled and installed in Yocto

Other links

Build

  • Add path to bblayers.conf
  • Add to "IMAGE_INSTALL_append" of core-image-elphel393.bb:
packagegroup-ros2-world \

Notes:

  • -

Work

Available packages

  • SSH session:
root@elphel393:~# export AMENT_PREFIX_PATH=/usr
root@elphel393:~# ros2 pkg list
builtin_interfaces
demo_nodes_cpp
example_interfaces
geometry_msgs
rcl
rcl_interfaces
rclcpp
rclpy
rcutils
rmw
rmw_fastrtps_cpp
rosidl_cmake
rosidl_generator_c
rosidl_generator_cpp
rosidl_parser
rosidl_typesupport_interface
rosidl_typesupport_introspection_c
rosidl_typesupport_introspection_cpp
sensor_msgs

Test Talker and Listener

  • SSH session 1:
root@elphel393:~# export AMENT_PREFIX_PATH=/usr
root@elphel393:~# ros2 run demo_nodes_cpp talker
  • SSH session 2:
root@elphel393:~# export AMENT_PREFIX_PATH=/usr
root@elphel393:~# ros2 run demo_nodes_cpp listener

Notes:

  • It populates /usr/lib/python3.5/site-packages/ so python scripts can be pretty much standalone
  • If AMENT_PREFIX_PATH is not set (only for command line apps) then:
Traceback (most recent call last):
  File "/usr/bin/ros2", line 11, in <module>
    load_entry_point('ros2cli==0.4.0', 'console_scripts', 'ros2')()
  File "/usr/lib/python3.5/site-packages/ros2cli/cli.py", line 64, in main
    rc = extension.main(parser=parser, args=args)
  File "/usr/lib/python3.5/site-packages/ros2run/command/run.py", line 59, in main
    executable_name=args.executable_name)
  File "/usr/lib/python3.5/site-packages/ros2run/api/__init__.py", line 30, in get_executable_path
    paths = get_executable_paths(package_name=package_name)
  File "/usr/lib/python3.5/site-packages/ros2pkg/api/__init__.py", line 41, in get_executable_paths
    prefix_path = get_prefix_path(package_name)
  File "/usr/lib/python3.5/site-packages/ros2pkg/api/__init__.py", line 34, in get_prefix_path
    prefix_path = get_package_prefix(package_name)
  File "/usr/lib/python3.5/site-packages/ament_index_python/packages.py", line 49, in get_package_prefix
    content, package_prefix = get_resource('packages', package_name)
  File "/usr/lib/python3.5/site-packages/ament_index_python/resources.py", line 37, in get_resource
    for path in get_search_paths():
  File "/usr/lib/python3.5/site-packages/ament_index_python/search_paths.py", line 30, in get_search_paths
    "Environment variable '{}' is not set or empty".format(AMENT_PREFIX_PATH_ENV_VAR))
OSError: Environment variable 'AMENT_PREFIX_PATH' is not set or empty

ROS2 on PC

Notes:

  • apt install ros-bouncy-desktop available in 18.04, n/a in 16.04
  • apt install ros-ardent-desktop available in 16.04

ROS1

Build

Won't build

Build Configuration:
BB_VERSION           = "1.37.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "universal"
TARGET_SYS           = "arm-poky-linux-gnueabi"
MACHINE              = "elphel393"
DISTRO               = "poky"
DISTRO_VERSION       = "2.4+snapshot-20181204"
TUNE_FEATURES        = "arm armv7a vfp neon cortexa9"
TARGET_FPU           = "softfp"
meta                 
meta-poky            
meta-yocto-bsp       = "HEAD:72867393fe2004ab9f0ee23eb09a975c82938b9e"
meta-ezynq           = "rocko:046de13c06cc248b725cb7b9928f35d4a369b50f"
meta-elphel393       = "rocko:0cea9b9b8776f0fe725316f1be1501396c95feb4"
meta-ros             = "HEAD:72068b17e4192b51e09c8dc633805a35edac8701"
meta-xilinx-bsp      = "HEAD:a18947c20dba2c0c38db8bde1ad4684995df4bbd"
meta-oe              
meta-python          
meta-networking      
meta-webserver       = "HEAD:34aa4c3202b427f59f843dc43a4e1afda4f81d13"
  • Error 1:
    • ROS_USE_PYTHON3 = "yes"
    • IMAGE_INSTALL += "roslaunch"
NOTE: Resolving any missing task queue dependencies
ERROR: Nothing RPROVIDES 'python3-pycrypto' (but /home/oleg/GIT/elphel393_rocko_clean_install/meta/meta-ros/recipes-devtools/python/python3-paramiko_1.16.0.bb RDEPENDS on or otherwise requires it)
NOTE: Runtime target 'python3-pycrypto' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['python3-pycrypto']
NOTE: Runtime target 'python3-paramiko' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['python3-paramiko', 'python3-pycrypto']
NOTE: Runtime target 'roslaunch' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['roslaunch', 'python3-paramiko', 'python3-pycrypto']
ERROR: Required build target 'core-image-elphel393' has no buildable providers.
Missing or unbuildable dependency chain was: ['core-image-elphel393', 'roslaunch', 'python3-paramiko', 'python3-pycrypto']
  • Successful build:
    • IMAGE_INSTALL += "roslaunch"
NOTE: Resolving any missing task queue dependencies
ERROR: Nothing RPROVIDES 'python3-pycrypto' (but /home/oleg/GIT/elphel393_rocko_clean_install/meta/meta-ros/recipes-devtools/python/python3-paramiko_1.16.0.bb RDEPENDS on or otherwise requires it)
NOTE: Runtime target 'python3-pycrypto' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['python3-pycrypto']
NOTE: Runtime target 'python3-paramiko' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['python3-paramiko', 'python3-pycrypto']
NOTE: Runtime target 'roslaunch' is unbuildable, removing...
Missing or unbuildable dependency chain was: ['roslaunch', 'python3-paramiko', 'python3-pycrypto']
ERROR: Required build target 'core-image-elphel393' has no buildable providers.
Missing or unbuildable dependency chain was: ['core-image-elphel393', 'roslaunch', 'python3-paramiko', 'python3-pycrypto']


  • Error 2:
    • Seems like rostopic causes:
ERROR: python-imaging-1.1.7-r5 do_package_qa: QA Issue: python-imaging: The compile log indicates that host include and/or library paths were used.
         Please check the log '/home/oleg/GIT/elphel393_rocko_clean_install/poky/build/tmp/work/cortexa9-neon-poky-linux-gnueabi/python-imaging/1.1.7-r5/temp/log.do_compile' for more information. [compile- host-path]
ERROR: python-imaging-1.1.7-r5 do_package_qa: QA run found fatal errors. Please consider fixing them.
ERROR: python-imaging-1.1.7-r5 do_package_qa: Function failed: do_package_qa
ERROR: Logfile of failure stored in: /home/oleg/GIT/elphel393_rocko_clean_install/poky/build/tmp/work/cortexa9-neon-poky-linux-gnueabi/python-imaging/1.1.7-r5/temp/log.do_package_qa.19425
ERROR: Task (/home/oleg/GIT/elphel393_rocko_clean_install/meta/meta-openembedded/meta-python/recipes-devtools/python/python-imaging_1.1.7.bb:do_package_qa) failed with exit code '1'

potential links: 
 https://github.com/intel-aero/meta-intel-aero/issues/81
 https://github.com/bmwcarit/meta-ros/issues/395
removed python3-imaging from rosbag - everything builds but then not really working.
with ROS_USE_PYTHON3 = "yes" stopped at finding an appropriate python-pycrypto lib

Work

  • Won't work
    • There's no rosrun (does not exist?)
    • SSH session 1:
      • Add to /etc/hosts:
127.0.0.1	elphel393.localdomain		elphel393
      • Export vars:
export ROS_ROOT=/opt/ros
export ROS_DISTRO=indigo
export ROS_PACKAGE_PATH=/opt/ros/indigo/share
export PATH=$PATH:/opt/ros/indigo/bin
export LD_LIBRARY_PATH=/opt/ros/indigo/lib
export PYTHONPATH=/opt/ros/indigo/lib/python2.7/site-packages
export ROS_MASTER_URI=http://localhost:11311
export CMAKE_PREFIX_PATH=/opt/ros/indigo
touch /opt/ros/indigo/.catkin
      • Roscore
roscore


    • SSH session 2:
root@elphel393:~# rosnode list
 /rosout
root@elphel393:~# rospack list
 cpp_common /opt/ros/indigo/share/cpp_common
 genmsg /opt/ros/indigo/share/genmsg
 genpy /opt/ros/indigo/share/genpy
 rosbag /opt/ros/indigo/share/rosbag
 rosbag_storage /opt/ros/indigo/share/rosbag_storage
 rosclean /opt/ros/indigo/share/rosclean
 rosconsole /opt/ros/indigo/share/rosconsole
 roscpp /opt/ros/indigo/share/roscpp
 roscpp_serialization /opt/ros/indigo/share/roscpp_serialization
 roscpp_tutorials /opt/ros/indigo/share/roscpp_tutorials
 rosgraph /opt/ros/indigo/share/rosgraph
 rosgraph_msgs /opt/ros/indigo/share/rosgraph_msgs
 roslaunch /opt/ros/indigo/share/roslaunch
 roslib /opt/ros/indigo/share/roslib
 roslz4 /opt/ros/indigo/share/roslz4
 rosmaster /opt/ros/indigo/share/rosmaster
 rosnode /opt/ros/indigo/share/rosnode
 rosout /opt/ros/indigo/share/rosout
 rospack /opt/ros/indigo/share/rospack
 rosparam /opt/ros/indigo/share/rosparam
 rospy /opt/ros/indigo/share/rospy
 rospy_tutorials /opt/ros/indigo/share/rospy_tutorials
 rostime /opt/ros/indigo/share/rostime
 rostopic /opt/ros/indigo/share/rostopic
 std_msgs /opt/ros/indigo/share/std_msgs 
 topic_tools /opt/ros/indigo/share/topic_tools
 xmlrpcpp /opt/ros/indigo/share/xmlrpcpp