ROS moving object package is addressing moving objects based on messages generated by Object Analytics ros_object_analytics. ros_moving_object delivers further analysis for the localized and tracked objects from Object Analytics by adding motion information. Such information can extend robot's ability of motion planing and collision avoidance.
ros_moving_object package publishes some messages to indicate different status/data.
- /moving_object/moving_objects merges info from the 3 input messages into one message, as well calculates velocity info of moving objects.
ROS packages from ros-kinetic-desktop-full
- roscpp
- std_msgs
- sensor_msgs
- geometry_msgs
- message_filters
- tf
ROS packages from Intel repo
- to build
cd ${ros_ws} # "ros_ws" is the catkin workspace root directory where this project is placed in
catkin_make
- to install
catkin_make install
- Prerequisite
ROS Moving Object package depends directly on ros_object_analytics, and indirectly on one of "state-of-the-art" algorithms. See more environment setup from ros_object_analytics repo.
- Launching commands
Taking ros_intel_movidius_ncs as default "state-of-the-art" algorithm.
roslaunch realsense_ros_camera rs_camera.launch enable_pointcloud:=true enable_sync:=true
roslaunch object_analytics_launch analytics_movidius_ncs.launch input_points:=/camera/points
roslaunch moving_object moving_object.launch
CA Policy is a sample ros package using ros_moving_object package to arbitrate suitable policies according to the detected obstacle types. CA Policy outputs policy name as topic ca_policy and acts the behaviors set to the given policy.
During robot navigation, node ca_policy monitors the output topics of moving_object. If a person moves into camera's field of view and near robot's trajectory, node moving_object sends topics including such social info. Once node ca_policy receives such social info, ca_policy sends out topic with social CA Policy status, meanwhile, ca_policy triggers corresponding actions to reconfigure navigation stack's behavior and send notification. Otherwise, if there is no person seen by the camera (that is, there is no social information to node ca_policy), normal CA Policy would be sent out and another set of policy actions where are binded to normal CA policy would be triggered.
The supported policy actions vary according to the specified robot chassis:
- Policy Actions supported on Turtlebot2:
- Dynamic Reconfiguration for navigation stack
- Led Light notification
- Beeper notification
- Policy Actions supported on Waterbot:
- Dynamic Reconfiguration for navigation stack
- Ledbelt notification
- /ca_policy/ca_policy notifies the current collision avoidance policy.
-
ROS packages from ros-kinetic-desktop-full
- roscpp
- std_msgs
- sensor_msgs
- geometry_msgs
- dynamic_reconfigure
- kobuki_msgs
-
ROS packages from Intel repo
-
Other Packages:
If you are running the packages on turtlebot 2 chassis, some kobuki related packages are dependent. For example, package kobuki_msgs is build-depend, and some of other kobuki packages are runtime-dependent. so safely, it is simple to just install kobuki meta package:
sudo apt-get install ros-kinetic-kobuki
If only for package build, install kobuki_msgs is enough:
sudo apt-get install ros-kinetic-kobuki-msgs
- Prerequisite
ROS CA Policy package depends indirectly on ros navigation and one of supported robot chassises (turtlebot2 or waterbot). Make sure ros navigation is correctly launched on the chosen robot chassis.
- Launching commands
Before launching CA Policy, make sure moving_object (steps in section above) is already launched. Use argument "chassis:=" to set the chassis working on. "chassis:=turtlebot" for turtlebot2, and "chassis:=waterbot" for Water C1. See below launching example:
roslaunch turtlebot_bringup minimal.launch
roslaunch ca_policy ca_policy.launch chassis:=turtlebot
roslaunch turtlebot_navigation gmapping_demo.launch
roslaunch turtlebot_rviz_launchers view_navigation.launch (Optional)
Currently, ca_policy package supports turtlebot2 and waterbot robot chassises. Some parameters should be updated for robot chassis changing:
- robot chassis: the name of robot name (currently turtlebot | waterbot)
- CaPolicies/config: the config file of each CA Policy.
- Implement specific policy actions to be used for the new chassis.
- Create sub-folder [chassis-name] under folder param/, which involves the CA Policy configuration files (i.e. normal.yaml and social.yaml, individually for normal policy and social policy), as well the specific configurations if any.
- Create file param/ca_policy_common.[chassis-name].yaml. In this file, the configuration paths of CaPolicies should be corrected set.
- Moving Object directly uses the frame_id passed through from Object Analytics package.
Curretnly, Obect Analytics uses frame_id "camera_depth_optical_frame" and its static transform. This frame is defined for the default kinect RGB-D camera on turtlebot2 and for the default camera on waterbot. In the common cases, the RGB-D camera used by Object Analytics package is always mounted with the same direction as the default one, so the bias between the 2 camera's coordinates can be ignored.
- The accuracy of the calcualted velocity highly depends on that of the data delivered by Object Analytics package.