Home
Please see the Arduino Repo wiki to have a better understanding of the low-level and hardware specifications of the sailboat.
The Arduino acts as a gathering interface for all sensors and give their access to the computer which can then apply its control schemes directly to the motors. The Raspberry PI here acts as the main computer on which the high-level control algorithms are launched.
To install all the necessary packages please follow Preparing the Raspberry Pi.
You can also install directly the linux environment with the image given here, read the guide for the installation.
To have a full view of the package go here.
All the data from the Arduino is sent via rosserial_python package with serial_node.py
node. The topics created by the Arduino are :
Publishers :
-
/GPS/fix
(gps_common::GPSFix) : GPS data of the boat -
/GPS/NMEA
(std_msgs::String) : GPS NMEA string data of the boat -
/IMU
(sensor_msgs::Imu) : IMU data of the boat -
/IMU_Dv
(geometry_msgs::Twist) : Velocity of the boat -
/wind
(geometry_msgs::Pose2D) : Wind direction and speed -
/rudderAngle
(std_msgs::Float32) : Float containing the actual rudder angle -
/sailAngle
(std_msgs::Float32) : Float containing the actual sail angle -
/pc_log
(std_msgs::String) : String containing information about what is happening. This is used to log messages inside the controller.
Subscribers :
-
/sailboat_cmd
(geometry_msgs::Twist) : Topic to send command to -
/sailboat_msg
(std_msgs::String) : Topic to send messages to
When the boat is launched, the rosserial_python node is called from a group called sailboat
. To subscribe to a published topic you then have to subscribe to /sailboat/<published_topic>
e.g. /sailboat/GPS/fix
.
To have an idea of the controllers accessible in the Raspberry PI please refer to the Controls List
If you want to make your own controller in a couple of minutes, follow this guide : Making a Controller (Cpp) or in Python : Making a Controller (Python)