Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/esteve/ros2_pepper
Scripts for cross-compiling ROS and ROS2 for Softbank's Pepper
https://github.com/esteve/ros2_pepper
aldebaran nao naoqi pepper robotics ros ros2 softbank
Last synced: about 2 months ago
JSON representation
Scripts for cross-compiling ROS and ROS2 for Softbank's Pepper
- Host: GitHub
- URL: https://github.com/esteve/ros2_pepper
- Owner: esteve
- License: apache-2.0
- Created: 2017-06-12T17:24:56.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2022-04-27T09:36:40.000Z (over 2 years ago)
- Last Synced: 2023-04-12T09:51:33.750Z (over 1 year ago)
- Topics: aldebaran, nao, naoqi, pepper, robotics, ros, ros2, softbank
- Language: Shell
- Homepage:
- Size: 76.2 KB
- Stars: 23
- Watchers: 6
- Forks: 20
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Introduction
This project contains a set of patches and scripts to compile and run ROS 1 and ROS 2 onboard a Pepper robot, without the need of a tethered computer.
## Pre-requirements
Download and extract the [NaoQi C++ framework](http://doc.aldebaran.com/2-5/index_dev_guide.html) and Softbanks's crosstool chain and point the `AL_DIR` and `ALDE_CTC_CROSS` environment variables to their respective paths:
```
export AL_DIR=/home/NaoQi <-- Or wherever you installed NaoQi
export ALDE_CTC_CROSS=$AL_DIR/ctc-linux64-atom-2.5.2.74
```## Prepare cross-compiling environment
We're going to use Docker to set up a container that will compile all the tools for cross-compiling ROS and all of its dependencies. Go to https://https://www.docker.com/community-edition to download it and install it for your Linux distribution.
1. Clone the project's repository
```
$ git clone git clone https://github.com/esteve/ros2_pepper.git
$ cd ros2_pepper
```## ROS 1
### Prepare the requirements for ROS 1
The following script will create a Docker image and compile Python interpreters suitable for both the host and the robot.
```
./prepare_requirements_ros1.sh
```### Build ROS 1 dependencies
Before we actually build ROS for Pepper, there's a bunch of dependencies we'll need to cross compile which are not available in Softbank's CTC:
- console_bridge
- poco
- tinyxml2
- urdfdom
- urdfdom_headers```
./build_ros1_dependencies.sh
```### Build ROS 1
Finally! Type the following, go grab a coffee and after a while you'll have an entire base ROS distro built for Pepper.
```
./build_ros1.sh
```### Copy ROS and its dependencies to the robot
By now you should have the following inside .ros-root in the current directory:
- Python 2.7 built for Pepper (.ros-root/Python-2.7.13)
- All the dependencies required by ROS (.ros-root/ros1_dependencies)
- A ROS workspace with ROS Kinetic built for Pepper (.ros-root/ros1_inst)
- A helper script that will set up the ROS workspace in the robot (.ros-root/setup_ros1_pepper.bash)We're going to copy these to the robot, assuming that your robot is connected to your network, type the following:
```
$ scp -r .ros-root nao@IP_ADDRESS_OF_YOUR_ROBOT:.ros-root
```### Run ROS 1 from inside Pepper
Now that we have it all in the robot, let's give it a try:
*SSH into the robot*
```
$ ssh nao@IP_ADDRESS_OF_YOUR_ROBOT
```*Source (not run) the setup script*
```
$ source .ros-root/setup_ros1_pepper.bash
```*Start naoqi_driver, note that NETWORK\_INTERFACE may be either wlan0 or eth0, pick the appropriate interface if your robot is connected via wifi or ethernet*
```
$ roslaunch naoqi_driver naoqi_driver.launch nao_ip:=IP_ADDRESS_OF_YOUR_ROBOT \
roscore_ip:=IP_ADDRESS_OF_YOUR_ROBOT network_interface:=NETWORK_INTERFACE
```## ROS 2
BEWARE: The ROS 2 port is still experimental and incomplete, simple sensors such as the bumpers work, but the camera driver has not been ported yet.
The following instructions require that you have ROS 1 built for Pepper.
### Prepare the requirements for ROS 2
The following script will create a Docker image and compile Python interpreters suitable for both the host and the robot.
```
./prepare_requirements_ros2.sh
```### Build ROS 2
Let's now build ROS 2 for Pepper:
```
./build_ros2.sh
```### Copy ROS 2 and its dependencies to the robot
Besides the ROS 1 binaries and its dependencies, we'll now a few more directories inside .ros-root in our current directory:
- Python 3.6 built for Pepper (.ros-root/Python-3.6.1)
- A ROS 2 workspace built for Pepper (.ros-root/ros2_inst)We're going to copy these to the robot, assuming that your robot is connected to your network, type the following:
```
$ scp -r .ros-root nao@IP_ADDRESS_OF_YOUR_ROBOT:.ros-root
```### Run ROS 2 from inside Pepper
Now that we have it all in the robot, let's give it a try:
*SSH into the robot*
```
$ ssh nao@IP_ADDRESS_OF_YOUR_ROBOT
```*Source (not run) the setup script*
```
$ source .ros-root/setup_ros2_pepper.bash
```ROS 2 does not have a something like roslaunch yet, so you'll have to run naoqi_driver directly:
*Start naoqi_driver, note that NETWORK\_INTERFACE may be either wlan0 or eth0, pick the appropriate interface if your robot is connected via wifi or ethernet*
```
$ naoqi_driver_node --qi-url=tcp://IP_ADDRESS_OF_YOUR_ROBOT:9559 \
--roscore_ip=IP_ADDRESS_OF_YOUR_ROBOT --network_interface=NETWORK_INTERFACE \
--namespace=naoqi_driver
```## Demos
The folks at the [Universidad Rey Juan Carlos](http://robotica.gsyc.es/) and [Intelligent Robotics](http://inrobots.es/) have produced the following video showing a Pepper robot runnning ROS onboard using the code from this repository:
[![Pepper Navigation](http://img.youtube.com/vi/0wIWJHMchaU/0.jpg)](https://www.youtube.com/watch?v=0wIWJHMchaU "Pepper Navigation")
Enjoy!