sibot log

2021-04-05

Antes de volta a trabalhar no ficheiro urdf com o modelo do robot de lagartas, fui, mais uma vez, ver se conseguia colocar o plugin phobos para o blender de modo a passar a usar a funcionalidade de import/export de urdfs no blender e desse modo usar o blender para desennhar os modelos urdf dos robots.

Mais uma vez não tive sucesso nessa instalação.

Entretanto consegui acabar o urdf do robot com lagartas á mão e ficou com o seguinte aspecto no rviz e no gazebo:

Visualização do urdf do robot de lagartas (tracked robot) no Rviz
Visualização do urdf do robot de lagartas (tracked robot) no Rviz
Visualização do urdf do robot de lagartas (tracked robot) no Gazebo
Visualização do urdf do robot de lagartas (tracked robot) no Gazebo

Existe uma pequena diferença relação ao modelo definido no sdf original, o angulo dos flippers face ao solo é menor (os flippers são as extremidades que existem anexas a cada lagarta)

Passado o problema da conversão do sdf para urdf, passei ao problema do controlo do movimento do robot, que gostava que fosse efectuado com base no seguinte plugin do gazebo (e a respectiva evocação no urdf):

libSimpleTrackedVehiclePlugin.so

<plugin filename=”libSimpleTrackedVehiclePlugin.so” name=”simple_tracked_vehicle”>
<body>base_link</body>
<left_track>left_track</left_track>
<right_track>right_track</right_track>
<left_flipper>front_left_flipper</left_flipper>
<left_flipper>rear_left_flipper</left_flipper>
<right_flipper>front_right_flipper</right_flipper>
<right_flipper>rear_right_flipper</right_flipper>
<track_mu>2</track_mu>
<track_mu2>0.5</track_mu2>
</plugin>

Mas o problema, á primeira vista é que este plugin não tem interface para topicos do ROS e aparenta ter como input o teclado via o seguinte plugin do gazebo (e a respectiva evocação no urdf):

libKeysToCmdVelPlugin.so

<gui>
<plugin name=”keyboard” filename=”libKeyboardGUIPlugin.so”/>
</gui>

<plugin filename=”libKeysToCmdVelPlugin.so” name=”keyboard_control”>
<publish_as_twist>true</publish_as_twist>
<cmd_vel_topic>~/simple_tracked/cmd_vel_twist</cmd_vel_topic>
</plugin>

Apesar da referência ao seguinte tópico do ros:

~/simple_tracked/cmd_vel_twist

não vejo qualquer referencia a esse topico com o rostopic list

/bot1/joint_states
/clock
/gazebo/link_states
/gazebo/model_states
/gazebo/parameter_descriptions
/gazebo/parameter_updates
/gazebo/set_link_state
/gazebo/set_model_state
/rosout
/rosout_agg
/tf
/tf_static

O codigo fonte dos gazebo  plugins envolvidos estão disponíveis em:

https://github.com/osrf/gazebo/blob/gazebo11/plugins/KeyboardGUIPlugin.cc

https://github.com/osrf/gazebo/blob/gazebo11/plugins/KeysToCmdVelPlugin.cc

https://github.com/osrf/gazebo/blob/gazebo11/plugins/TrackedVehiclePlugin.cc

https://github.com/osrf/gazebo/blob/gazebo11/plugins/SimpleTrackedVehiclePlugin.cc

Compare gazebo plugins source

https://github.com/osrf/gazebo/blob/gazebo11/plugins/DiffDrivePlugin.cc

https://github.com/osrf/gazebo/blob/gazebo11/plugins/SkidSteerDrivePlugin.cc

 

Compare rROS gazebo plugins source

https://github.com/ros-simulation/gazebo_ros_pkgs/blob/noetic-devel/gazebo_plugins/src/gazebo_ros_diff_drive.cpp

https://github.com/ros-simulation/gazebo_ros_pkgs/blob/noetic-devel/gazebo_plugins/src/gazebo_ros_skid_steer_drive.cpp

 

Linux gazebo plugins lib files

/usr/lib/x86_64-linux-gnu/gazebo-11/plugins/libSimpleTrackedVehiclePlugin.so
/usr/lib/x86_64-linux-gnu/gazebo-11/plugins/libTrackedVehiclePlugin.so
/usr/lib/x86_64-linux-gnu/gazebo-11/plugins/libWheelTrackedVehiclePlugin.so

 

Desenvolver ros plugins para o gazebo

sudo apt install libgazebo11

sudo apt install libgazebo11-dev

http://gazebosim.org/tutorials?tut=ros_installing&cat=connect_ros

https://github.com/ros-simulation/gazebo_ros_pkgs

cd ~/catkin_ws/src
git clone https://github.com/ros-simulation/gazebo_ros_pkgs.git -b noetic-devel

www.theconstructsim.com/create-a-ros-sensor-plugin-for-gazebo/

 

Desenvolver plugins para o gazebo

http://gazebosim.org/tutorials?cat=write_plugin

http://gazebosim.org/tutorials?tut=plugins_model&cat=write_plugin

 

Other plugins sources

https://github.com/onlytailei/gym_ped_sim

https://github.com/wojiaojiao/pegasus_gazebo_plugins

 

Other robots

https://wiki.cogni.io/Simulation

2021-04-24

Já desde ontem que ando de volta da simulação do robot com lagartas, que vai ficar no seguinte repositório.

https://github.com/inaciose/sibottrkd_description

Alguns launch files

roslaunch sibottrkd_description spawn_bot.launch

roslaunch sibottrkd_description world_1bot.launch

roslaunch sibottrkd_description world.launch world:=tracked_vehicle_simple

Tenho estado a construir o modelo com base no modelo disponível no seguinte mundo (world file) do gazebo:

https://github.com/osrf/gazebo/blob/gazebo11/worlds/tracked_vehicle_simple.world

O modelo de robot de lagartas definido no mundo acima usa o seguinte plugin especifico para robots de lagartas (tracked robot):

libSimpleTrackedVehiclePlugin.so

Primeiro passei por um processo de conversão manual do sdf para urdf, no entanto o resultado não foi satisfatório. Todos os componentes do modelo ficaram colocados no eixo dos y, e as extremidades das lagartas também não ficaram bem posicionadas.

O modelo tal como está no mundo do gazebo em sdf tem o seguinte aspecto:

O aspecto original no rviz e no gazebo do modelo após o primeiro processo manual de conversão do sdf para urdf era o seguinte:

 

2021-04-22

sibotdiff_description & sibotdiff_bringup

Actualizei o sibotdiff_description da seguinte forma:

Removi os models antigos (robot01 e robot02) e respectivas pastas de includes, e copiei o model robot01 do multibot_description  (e respectiva pasta de includes) para a para a pasta urdf do sibotdiff_description.

Na pasta launch do sibotdiff_bringup actualizei os ficheiros spawn_* e world_* para ficarem em linha com o existente no multibot_description.

Os modelos e ficheiros relacionados do sibotdiff_description vão ficar a ser desenvolvidos no multibot_description até ficarem estáveis e serem copiados para o sibotdiff_description.

multibot_description

Passando para o desenvolvimento no multibot_description o proximo passo é passar a usar macros e fazer com que a robot seja mais estavel (eventualmente pesado)

Sobre as propriedades fisicas seguem dois links importantes

http://wiki.ros.org/urdf/Tutorials/Adding%20Physical%20and%20Collision%20Properties%20to%20a%20URDF%20Model

<inertial>
<mass value=”10″/>
<inertia ixx=”0.4″ ixy=”0.0″ ixz=”0.0″ iyy=”0.4″ iyz=”0.0″ izz=”0.2″/>
</inertial>

<mass> (massa) em Kg

<inertia> Matriz de inercia. 3×3, só são necessárias as bolds.

Para mais informações sobre como calcular estes valores, ver:

https://en.wikipedia.org/wiki/List_of_moments_of_inertia#List_of_3D_inertia_tensors

Este tipo de cálculos (inertia) pode ser executado por macros.

 

 

rviz.launch melhorado para usar multiplas configurações

modelos robot00, e robot01, alterados para terem as rodas e o chassis com cores diferentes (a cor do chassis é escolhido num dos argumentos)

2021-04-21

multibot_description

Depois de ter conseguido por o multi robot a funcionar no sibot, decidi fazer um pacote especifico para servir como demo.

launch commands

roslaunch multibot_description world_1bot.launch

roslaunch multibot_description spawn_bot.launch ns:=sibot2 botcolor:=Blue x:=2

roslaunch multibot_description spawn_bot.launch ns:=sibot3 botcolor:=Red x:=3

roslaunch multibot_description world_2bot.launch

relativamente ao sibotdiff_description & bringup, removei o botname, e substitui pelo namespace onde ele era usado.

Consegui por o imu a funcionar.

Sibot, multi robot experiences

De volta da tentativa de colocar multiplos robots a funcionar correctamente no gazebo e no rviz.

Há três dias que ando de volta disto e ainda não consegui por as coisas a funcionar no rviz.

Creio que o problema esta no tf_prefix que deixou de funcionar, no ros noetic, mas não tenho a certeza.

No gazebo creio que não há problemas vejo a simulação a funcionar.

Tentativa 1

Hoje tentei a solução que está no primeiro link, o segundo link é para o pacote rosbot_description necessário para este teste

https://community.husarion.com/t/rviz-with-multiple-rosbots/792/4

https://github.com/husarion/rosbot_description

Também não funcionou.

Tentativa 2

Com base nos ficheiros xacro robot02 que tem o namespace tem todos os links e joints fiz as seguintes alterações:

Alterei ficheiro gazebo.diff_drive_controller.xacro, com base nas tags com a variável namespace disponíveis no ficheiro gazebo.xacro rosbot

Comentei as entradas do IMU.

E funcionou !

Tenho que fazer um pacote especifico para o multi robot.

 


 

roslaunch sibotdiff_bringup world_with_botns.launch model:=robot02

roslaunch sibotdiff_bringup spawn_botns.launch ns:=sibot1 botname:=bot1 botcolor:=Red x:=1

roslaunch sibotdiff_bringup spawn_botns.launch ns:=sibot2 botname:=bot2 botcolor:=Blue x:=2

 

 

aplicar xacro e converter xacro files para um urdf único

rosrun xacro xacro -o model.urdf robot02.urdf.xacro botname:=bot1 namespace:=bot1 botcolor:=Green


 

roslaunch sibotackm_bringup world_bot_twist.launch

Joystick para conduzir os robots no gazebo

Passar a usar o joystick em vez do rqt para conduzir o robot

As coisas não correram muito bem. O manipulo para andar nas diversas direcções não funciona bem para conduzir o carro.

 

Instalar

sudo apt-get install ros-melodic-joy

sudo apt install ros-noetic-teleop-twist-joy

Mais informação:

Joystick no ROS

http://wiki.ros.org/teleop_twist_joy