This repository contains an unofficial ROS package for Anki Vector that I started as a small side project after finishing several online ROS courses. This package is essentially a wrapping of core Vector functions from Vector SDK as ROS topics, services and actions(full list below). In order to showcase the package I wrote a simple red ball tracking node which subscribes to the camera feed coming from Vector, locates the red ball using cv_bridge/OpenCV and publish Twist messages to move the robot accurdenly as you can see in the following video:
- "RDP 039: Using Anki Vector robot with ROS with Omri Ben-Bassat"
- "[Morpheus Chair] Vector ROS Simulation | T2.Ep.3"
- "[Morpheus Chair] Vector ROSDS CloudConnection | T2.Ep.4"
Vector ROS project is actually divided into three separated packages, which are:
- Main package, contains message service descriptors and example nodes, such as a red ball tracker.
- Physical / "real" robot driver node - this node does the actual interface to Vector using Vector Python SDK.
- Notice this package was developed using Python 3.6 to work with Vector's SDK.
- Offers easy deployment using Docker!
- Simulated robot package for both Cozmo and Vector, created by the guys at The Construct so we can use Vector in Gazebo.
- Video tutorial showing spawn simulated Vector in ROS Developers Studio
Setup With Physical Robot
You can find the full setup instructions at vector_ros_driver.
Vector camera feed.
Move Vector around.
Play animation by name.
View single image from camera
beta_b0t@home:~$ rosrun image_view image_saver image:=/vector/camera [ INFO] [1550425113.646567813]: Saved image left0000.jpg [ INFO] [1550425113.752592532]: Saved image left0001.jpg [ INFO] [1550425113.848999553]: Saved image left0002.jpg ... (Ctrl+C) ... beta_b0t@home:~$ eog left0000.jpg
Set head angle
beta_b0t@home:~$ rosservice call /vector/set_head_angle "deg: 45.0"
beta_b0t@home:~$ rosservice call /vector/say_text "text: 'hello world'"
beta_b0t@home:~$ rostopic pub /vector/play_animation/goal vector_ros/PlayAnimationActionGoal "header: seq: 0 stamp: secs: 0 nsecs: 0 frame_id: '' goal_id: stamp: secs: 0 nsecs: 0 id: '' goal: anim: 'anim_turn_left_01'"
- Why isn't this XX from Vector SDK supported? Well, I didn't wrap all the functions from the SDK - only the main ones as i see it. Yet, if you found a missing function that you need/would like to see as part of vector_ros, please consider opening a new issue with your proposal.