DINGO Software Setup
To connect to the Pi make sure you are on the SPOT-iot wifi.
Then to ssh onto the Pi type:
ssh adam@172.21.64.184
Password: adam
Running the DINGO with ROS (From a ubuntu computer)
Make sure the servos are properly calibrated and that the right offset matrix is in HardwareInterface.py. If unsure please calibrate the servos by following the steps outlined in CalibrateServos.py
Connect to the Pi with
ssh -X adam@172.21.64.184
Password: adam
The -X is important and allows the keyboard to work. Then execute
roslaunch dingo dingo.launch is_physical:=1 is_sim:=0 use_joystick:=0 use_keyboard:=1
Press 1 to enter TROT mode and press backspace or 2 to go into REST mode. In TROT mode the legs will start moving but the DINGO will stay in place. To get it moving press W to give him a forward speed
You can view the commands being sent to DINGO by opening up a new terminal and launching
rostopic echo /joy
How to use the docker container on a laptop
CAREFUL: You should not follow the same instructions on the raspberry PI, this is for laptops and everything is calibrated such that the simulation works correctly. First, you need to have a linux OS. If you have apple silicon chip, use https://asahilinux.org/, if you have x86 chip, use an ubuntu dual boot for example (it can be fedora or debian too but preferably ubuntu).
Go into terminal:
git clone <https://github.com/Yerbert/DingoQuadruped.git>
cd DingoQuadruped
code .
You should see two important files: dockerfile and Docker-compose.yaml:
Dockerfile: Its goal is to give the intructions to build a docker image. The instructions are bash instructions used to intall libraries, certain dependencies, set the OS version, set the python version, …
Docker-compose.yaml: build images based on the dockerfiles and launch containers and associate volumes with them, …
Firstly, open the dockerfile and replace its content with the following:
FROM ros:noetic-robot
RUN sudo sh -c 'echo "deb <http://packages.ros.org/ros/ubuntu> $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
RUN sudo apt install curl RUN curl -s <https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc> | sudo apt-key add -
RUN apt-get update && \\ apt-get install -y --no-install-recommends \\ gdb \\ apt-utils \\ python3-rosdep \\ python3-pip \\ python3-vcstool \\ python3-pymodbus \\ build-essential \\ ros-noetic-catkin \\ python3-catkin-tools \\ ros-noetic-ros-controllers \\ nano \\ ros-noetic-soem \\ libvlccore-dev \\ libvlc-dev \\ ros-noetic-joy \\ ros-noetic-rosserial \\ ros-noetic-rosserial-arduino \\ git
RUN apt update && apt install -y x11-apps
RUN pip3 install \\ #Following are from pupper codexeyes transforms3d \\ UDPComms \\ serial \\ pyserial \\ pigpio \\ regex \\ matplotlib \\ #Following are Nathan/Alex additions pynput \\ spidev \\ #adafruit-circuitpython-pca9685 \\ adafruit-circuitpython-servokit
RUN apt-get updateRUN apt-get install -y ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control
WORKDIR /dingo_wsCOPY /dingo_ws/src /dingo_ws/srcRUN rosdep updateRUN rosdep install --from-paths src --ignore-src -r -y
RUN echo "source /opt/ros/$ROS_DISTRO/setup.bash" >> /etc/bash.bashrc
RUN /bin/bash -c 'source /opt/ros/$ROS_DISTRO/setup.bash &&\\catkin_make --directory /dingo_ws -DCMAKE_BUILD_TYPE=Debug'
RUN echo "source /opt/ros/$ROS_DISTRO/setup.bash" >> /etc/bash.bashrcRUN echo "source /dingo_ws/devel/setup.bash" >> /etc/bash.bashrc
ENV DISPLAY=:0
ENV LIBGL_ALWAYS_SOFTWARE=1
CMD [ "bash" ]
This step is very important. Indeed, the original dockerfile is missing some important stuff to run the project correctly on a computer and the image osrf:ros doesn’t work on arm. Then at the root of DingoQuadruped, run:
sudo docker compose build --no-cache
The —no-cache flag is very important st it builds from the beginning Once this step is done, we can use the image to launch containers.
sudo docker compose up
To identify the containers launched, open a new terminal and type:
sudo docker ps
You’ll get a list of containers. Take the ID of the most recent one and type:
sudo docker exec -it e78a4f62df13 bash
e78a4f62df13 is an example of CONTAINER ID you’ll have Now you can type commands in your container. If you try to test the linkage between the display and the container for graphical purpose, you can type:
xeyes
You’ll probably get:
root@adam-macbookair:/dingo_ws# xeyes
Authorization required, but no authorization protocol specified
Error: Can't open display: :0
Open a new terminal and type:
xhost +
Then try again xeyes. If it still doesn’t work, ask god for help.
Trying the simulation:
Before using the project, you’ll need to compile it:
cd dingo_ws
catkin_make
source devel/setup.bash
In the Dingo project, to launch the simulation, you’ll need to launch the gazebo tools and the dingo nodes. Open two different terminals and access the container (the same one of course, as before) To launch the gazebo tools in the first terminal:
roslaunch dingo dingo_simulator.launch
You should see a gazebo window appearing To launch the dingo nodes, use:
roslaunch dingo dingo.launch is_sim:=1 is_physical:=0 use_keyboard:=1 use_joystick:=0
You can use up down left and right keys to test everything works correctly.
Flashing Arduino
A sketch is actually a folder where there is a .ino file of the same name.
To compile the code:
arduino-cli compile --fqbn arduino:avr:nano MySketch
To put it into the arduino
arduino-cli upload -p /dev/ttyUSB0 --fqbn arduino:avr:nano MyFirstSketch
If you followed the steps correclty, arduino-clli should look for the libraries into
~/Arduino/libraries
Thus, if you need to add specific libraries etc, add them there