Skip to content

Development of autonomous driving capabilities for an ATV, in collaboration with the department of Agricultural Science of the Helsinki University

License

Notifications You must be signed in to change notification settings

MuttiGiacomo/autonomous_ATV

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

autonomous_ATV

Development of autonomous driving capabilities for an ATV, in collaboration with the Department of Agricultural Science of the Helsinki University.

atv_playground

This branch is meant to be an easier introduction to the proper "atv_simulation". Here the inputs and control may look easier, and additional sensors are already prepared (3D camera, 2D lidar, IMU, and GPS). The main difference from the simulation environment are the inputs:

  • Desired velocity (which can also be negative)
  • The desired global steering angle (not the single variation between timeframes) These differences, compared to the simulation (which requires unsigned velocity, direction, and angle adjustment), make the approach and the development of autonomous driving scripts easier.

ROS version: Melodic

dev_ws: "ATV_ws"

Current packages:

  • ATV_description -> for ATV model and world visualization
  • ATV_control -> for actuator implementation
  • atv_gazebo -> for launching everything in a specific complex world
  • teleop_key -> command ATV from keyboard input
  • teleop_joy -> command ATV from joystick input

Launch command

cd autonomous_ATV/ATV_ws
catkin_make
source devel/setup.bash

Spawn the ATV in a specific world:

launch empty world with ATV in the origin:

roslaunch ATV_description launch_ATV.launch

launch agribot world with ATV in it:

launch ATV_gazebo agribot_farm.launch

Connect a teleoperation device:

teleoperating with keyboard:

launch ATV_control teleop_key.launch

teleoperating with PS4 controller:

rosrun ATV_control teleop_joy_ps4.launch

Nodes and topics graph

rqt_graps

The image, generated using rqt_graph, shows the active nodes and topics: the /key_teleop node sends the keyboard inputs through the /ackerman_cmd topic to the /ackermann_steering node that translates the /ackerman_drive message into specific wheel spinning velocity or turning radius. The values are sent to the specific actuator located under the namespace ATV which are forwarded to the simluating eviroment, Gazebo.

In the background joint_state_publisher and robot_state_publisher are always publishing thrpugh /tf allowing a visualisation on Rviz.

(this is the simple version without any additional sesor and using the keyboard teleopration, you can have the actual graph of at your current state running rqt_graph at any point in a new terminal, while the simulation is running)


Roadmap:

(just as reference of how the work has been organized throughout the project)

  • enviroment setup (ros workspace + gazebo)
  • URDF model of the atv (needed for a proper Gazebo/Rviz/ROS simulation)
  • creation of an initial .launch file just to spaun the atv
  • creation of different .world files, to have different scenarios
  • addition of transmission and actuators to the URDF (to allow wheel spinning/steering)
  • anable moovement using scrips (initial tests for the keyboard teleoperation)
  • study of the Ackermann steering and best possible implementation
  • actual implementation of Ackerman steering script
  • keyboard teleopration scripts
  • PS4 controller teleopration scripts
  • connection of Rviz and visualization setup
  • sensor implementation in atv URDF

Future steps:

(what I would do in order to reach autonomous driving)

Since the goal of the project is to develop an autonomous driving ATV, the core areas to work on are AUTONOMOUS PATH PLANNING and OBSTACLE AVOIDANCE.

The first allows to move the ATV from point A to point B (and tipically uses some sensor fusion between a world-reference sensor sach as a GPS, and a relative sensor such as an encoder/IMU).

The second ensures to avoid unexpected objets in the way and acts differently depending on the situation (stops the atv or drives it arround the obstacle).

About

Development of autonomous driving capabilities for an ATV, in collaboration with the department of Agricultural Science of the Helsinki University

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published