Problem in connecting the ROS Bridge to a real robot and sending the message

Hi there,

I am trying to synchronize the robot simulation on Isaac Sim and the real robot.
The robot is powered by a Jetson Nano board (ubuntu 18.04 and ROS melodic).

I have created the Action-graph as below to control the robot to move forwards and backwards by pressing the keyboard. The simulation on Isaac-Sim works but the message couldn’t reach the ROS in the robot.
The rostopic cmd_vel was on.

I have inserted the ROS_MASTER_URL and ROS_IP to the isaac-sim.sh file.

On the other hand I can send the message to ROS from a custom mobile apps by the ROS bridge.
Could you tell me what might be the possible problems that the robot cannot receive signal from Isaac-Sim? Thanks

Hi @kahlam

Have you also configured the ROS_MASTER_URI and ROS_IP (or ROS_HOSTNAME) in the robot?

Btw, I think it is not necessary to modify the Isaac Sim startup script.
As long as there is a roscore running in some other terminal on the same workstation/container it is enough.

Hi @toni.sm

No I did not configure the ROS_MASTER_URI and ROS_IP on the robot side.
ROS was not installed on the workstation at that time so rosrun was not running.

As my workstation OS is ubuntu 22.04 thus I installed ROS2 and tried to connect to robot through ros1_bridge but somehow, I was not able to launch the ros1_bridge.

Should I downgrade the workstation to Ubuntu 20.04 and install ROS1 noetic to connect to ROS1 melodic on the robot or install ROS2 on the robot and use ros2_bridge to receive message from Isaac-sim?

Also, do anyone can share some samples of Action graphs that show how to publish message that make robot move?

Thanks in advance!

Hi @kahlam

A possible solution in this scenario could be to run a ROS docker container on the workstation alongside Isaac Sim.

Note: It should work, although I haven’t tested it because I don’t have Ubuntu 22.XX installed.

Example (change the WORKSTATION_IP by the workstation IP address):

# on the workstation
docker pull ros:noetic-ros-core-focal
docker run --entrypoint bash -it --network=host ros:noetic-ros-core-focal

# inside the container
# do it once (add ROS environment variables to .bashrc) and source the .bashrc
echo export ROS_MASTER_URI=http://WORKSTATION_IP:11311/ >> ~/.bashrc
echo export ROS_IP=WORKSTATION_IP >> ~/.bashrc

# launch roscore 
source /opt/ros/noetic/setup.bash 
roscore

Also, configure the ROS_MASTER_URI and ROS_IP in the terminal running Isaac Sim (I retract my previous comment) and in the robot (use the robot IP address for the ROS_IP in the robot computer) as well