From 2f86fcb8aaa558a3a529d9bf9f7630d489b8d453 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergi=20Hern=C3=A0ndez=20Juan?= <shernand@iri.upc.edu> Date: Sat, 20 May 2017 23:48:07 +0200 Subject: [PATCH] Added the necessary files for the simulation of the charge environment. --- darwin_apps/launch/charge/charge_sim.launch | 19 +++ darwin_controller/CMakeLists.txt | 1 + darwin_description/launch/charge_env.launch | 10 ++ .../meshes/charge/charge_support.stl | Bin 0 -> 80884 bytes .../meshes/charge/connector.stl | Bin 0 -> 13284 bytes darwin_description/meshes/charge/far_qr.stl | Bin 0 -> 1684 bytes darwin_description/meshes/charge/near_qr.stl | Bin 0 -> 6884 bytes .../urdf/charge/charge_env.xacro | 11 ++ .../urdf/charge/charge_station.xacro | 152 ++++++++++++++++++ 9 files changed, 193 insertions(+) create mode 100644 darwin_apps/launch/charge/charge_sim.launch create mode 100644 darwin_description/launch/charge_env.launch create mode 100755 darwin_description/meshes/charge/charge_support.stl create mode 100755 darwin_description/meshes/charge/connector.stl create mode 100755 darwin_description/meshes/charge/far_qr.stl create mode 100755 darwin_description/meshes/charge/near_qr.stl create mode 100755 darwin_description/urdf/charge/charge_env.xacro create mode 100644 darwin_description/urdf/charge/charge_station.xacro diff --git a/darwin_apps/launch/charge/charge_sim.launch b/darwin_apps/launch/charge/charge_sim.launch new file mode 100644 index 0000000..8510b1f --- /dev/null +++ b/darwin_apps/launch/charge/charge_sim.launch @@ -0,0 +1,19 @@ +<launch> + + <arg name="robot" default="darwin" /> + <arg name="environment" default="charge_env" /> + + <include file="$(find darwin_description)/launch/darwin_sim.launch"> + <arg name="robot" value="$(arg robot)" /> + </include> + + <!-- launch dynamic reconfigure --> + <node name="rqt_reconfigure" pkg="rqt_reconfigure" type="rqt_reconfigure" respawn="false" + output="screen"/> + + <include file="$(find darwin_description)/launch/charge_env.launch"> + <arg name="environment" value="$(arg environment)" /> + </include> + +</launch> + diff --git a/darwin_controller/CMakeLists.txt b/darwin_controller/CMakeLists.txt index 3b96092..be33c40 100644 --- a/darwin_controller/CMakeLists.txt +++ b/darwin_controller/CMakeLists.txt @@ -119,6 +119,7 @@ add_library(${PROJECT_NAME} src/darwin_controller.cpp ${DARWIN_FW_PATH}/src/joint_motion.c ${DARWIN_FW_PATH}/src/head_tracking.c ${DARWIN_FW_PATH}/src/motion_manager.c + ${DARWIN_FW_PATH}/src/smart_charger.c ${DARWIN_FW_PATH}/src/grippers.c src/sim/stm32_hal.c src/sim/stm32_cortex.c diff --git a/darwin_description/launch/charge_env.launch b/darwin_description/launch/charge_env.launch new file mode 100644 index 0000000..7e24a80 --- /dev/null +++ b/darwin_description/launch/charge_env.launch @@ -0,0 +1,10 @@ +<launch> + <arg name="environment" default="charge_env" /> + + <!-- Convert an xacro and put on parameter server --> + <param name="charge_environment" + command="$(find xacro)/xacro.py '$(find darwin_description)/urdf/charge/$(arg environment).xacro'" /> + + <node name="spawn_charge_station" pkg="gazebo_ros" type="spawn_model" args="-param charge_environment -urdf -model charge_station -x 1.0 -y 0.25 -z 0.03 -R 0 -P 0 -Y 3.14159"/> + +</launch> diff --git a/darwin_description/meshes/charge/charge_support.stl b/darwin_description/meshes/charge/charge_support.stl new file mode 100755 index 0000000000000000000000000000000000000000..3f0a0d183d43f5471dabca68a8fa26d3733f8167 GIT binary patch literal 80884 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 T$_(yX?#%7EaxA0PdddF_k*r`3 literal 0 HcmV?d00001 diff --git a/darwin_description/meshes/charge/connector.stl b/darwin_description/meshes/charge/connector.stl new file mode 100755 index 0000000000000000000000000000000000000000..27fa7fe0987a890003b936267a52c694aec85e58 GIT binary patch literal 13284 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 literal 0 HcmV?d00001 diff --git a/darwin_description/meshes/charge/far_qr.stl b/darwin_description/meshes/charge/far_qr.stl new file mode 100755 index 0000000000000000000000000000000000000000..201896091af9f860b8c06b31436aaf4ab914b3e5 GIT binary patch literal 1684 zcmb`F(P;xQ5JdBxDhz4kj2mzdArJzAK(O7w73RYY#NTcwnz<c$ypqrP$bs0kG;e1m z@8SFF^L_R4wtwC2SO4)n`8RH!FE2w`$Mes29c!|jd$)wE5)G1cL(~%|;4AM%qN-FM zJ#-27>vba^{zOm(rB>rnPrPo)@rHd5C#ot4zWR;FDeB^6@)i5=n7RZ{oQNF$j|r-x ztG<VNS63uTZA9ixS58!w-MsAzgl=95)$iUT6BAVNR;<)?bxa;4Kxu&(H{!~!I#GmD zIU?`TC8SiOTEx`{JE<m=QZuTb*~f^xB<r8V1tGN}YwPST0d*!ws`^NuqEbD@Ox6Fq zA)wT9dVbw{51XHL<d|3G^*^8Mqdy}s8JbEFpi@^#g^6*GWda^fC{I(;QK5Hq^_Y-{ Y6UeXk;QU4{sRsNuk7WWLPAD%Pza15Z)c^nh literal 0 HcmV?d00001 diff --git a/darwin_description/meshes/charge/near_qr.stl b/darwin_description/meshes/charge/near_qr.stl new file mode 100755 index 0000000000000000000000000000000000000000..c229ea9b16b0d5a466ae346d8c9129ad0c291551 GIT binary patch literal 6884 zcmbuDJ&R>U5QYz$h@rVKa0fIo5yar^Frf&uFsxv@2pR~YxT0%#14Y5VAc*XO{sE)2 z!+;<gxGDxR!Gb3K1XIC&>-2kls!#VIIKfbK_0#py)pfe>2k*V}_M1oVzV*hP+wb2w z`u~5QPx{-R{{Gij_ayxI=<MX@pUzL7zPh(So+Y2}ZpQeQux3EaTjI0*?xNU;b*miq zo_+CHHadhgve6-yX?pqZhxbbem$LTc)$Zc<pJ!nM^78fL-HFFDLCt_DHne`p)lSkc zkIpV?u4c%K<X6^Qt#Ks6ngP+Var9~AD%P!X*!$##$W@21Mm9P`$E%u?u;KiOe(j^k zVaJ9wn$;nS4em!f%l3W%oe63{FBmUg6&uH@U+u@2k9QaIcV|(fkmskab|)Us1T_O9 zay9L>zV@D#A^F#%bJbXQWqF+%{|mt^K6ABu@cqZT8zLCfmT-PZNWS&b@dMG<6P}fG zRhWHn#j9I)&kv_a@~d^9dAhO<YDoN6&ZFr}D7&3rvM}pg!aIdt5}m<4CKEUBp8Kpt zM(gQXH11QdC9KgNn2_x8Oek7gms~s1HD1a05n(#pkag!um1vnBZVCHN0(IP}5)#hz zIC5&ZE~|3um9xlMTFHHEOIXtq?lEIR>w1><+$&{*nwBt~301Yvv%U<L$JI^^34B+Y z{b&iFd7iZF6*XK}<NdnguJPP4)7b_!Bv{j9g0r5u+TC!s%LFwf#&NWSqt&>(-PVRR zT$gzp6P%@tc%@8GLxNw4F~M2mPEAcqxGKX&{kK2GS({P$A=heOziI~pdk{A=-)hjo z8v^HJMjg+}LiMU4sA&n`A95V%wKIBfcv$zpv4MTw5VapSgtBXY@jaiB^$uZwNnmdp zLVHmAZtOwrk8y|dc#d2<XpLwRmbZlWR<u1tg*INHGt4;iye%~Zx<MjvHai4sseW-{ z2mAZMN~FE94HBHiTFAMghJ@sL&YL(|!m~8)mrS;ydabvjs6@|V<!6E#(I&<=NN^T9 zQ4<F>B*u}G;H+`AQ$u20i6l7dznwu6to)o^Rl6%uvn=xzYzfyZ3CTX2*At$_)0GKo zxUS^>Id2KiVivYGT(4YLvfqZ+6P_i)Jth;>a9#B-68qEjO*l>PcR@@c+gsV_66`*t zOSSXO$#qqUzKdXdOw1%8$BEisuJ6uif@YCieGj?X8xvuJ#J`dAUCVWuH;k`w9A3iI zkbt~;b=VJ_j|K9K^ReXppk_ccUbVC88H{(E&tra{tCp+*O=9)xuphj!K<1lsjXV)P z=L4eH;C{5T?4dfUW6A_IpwnF|*RFb^Z+DR6UgGgg;3l&Sh&A%Vp0n?g!1$Wo9+7N- zUWr3?(ZkbkBp6@4>Jceg#8-$fUjOhp{T`#5WcOjm!Fcg%K*TQv?opsu;v01!+wj{` zvn;dQg^eD;TX@)WM~xG8Sv)J$G-2HhVGp;2HJ}+&Cyx4EidmKwhrd_bIINKk6OcRm z;qQ`WS(c3|clN^?5|9g_{bsI4ggx96)?nSpwBuU|_jcTU;&)@8JB*je<yD8^ONewK z{y3VybzSimHn{bb$Opti0`i)x!>QFh(Qh2c3-6B+M<RTC9T3GviTb{x7pt7u2IR2e z@l0Udlq-y{kw0%6@HZm&uZ|d>BUe2lZs8`BE62A+UNT&$Y0oS|PV|=Gy1ut(8|@DI z^`lvqRSQ*KBTrRg4GG9iuC$haBhf6&7;kb#4GGAFP~9?DeuraL?2TjE64nfe630I= COfPEy literal 0 HcmV?d00001 diff --git a/darwin_description/urdf/charge/charge_env.xacro b/darwin_description/urdf/charge/charge_env.xacro new file mode 100755 index 0000000..c2dc91d --- /dev/null +++ b/darwin_description/urdf/charge/charge_env.xacro @@ -0,0 +1,11 @@ +<robot name="bioloid" xmlns:xacro="http://www.ros.org/wiki/xacro"> + + <xacro:include filename="$(find bioloid_description)/urdf/ceabot/obstacle_base.xacro" /> + <xacro:include filename="$(find darwin_description)/urdf/charge/charge_station.xacro" /> + + <xacro:obstacle_base name="obstacle_base"/> + <xacro:charge_station name="station" parent="obstacle_base"> + <origin xyz="0.5 0.5 0.0" rpy="0 0 0" /> + </xacro:charge_station> + +</robot> diff --git a/darwin_description/urdf/charge/charge_station.xacro b/darwin_description/urdf/charge/charge_station.xacro new file mode 100644 index 0000000..8dd1e19 --- /dev/null +++ b/darwin_description/urdf/charge/charge_station.xacro @@ -0,0 +1,152 @@ +<?xml version="1.0"?> + +<root xmlns:xacro="http://ros.org/wiki/xacro"> + + <xacro:include filename="$(find bioloid_description)/urdf/qrcodes/qrcode.xacro" /> + + <xacro:macro name="charge_station" params="name parent *origin"> + <!-- charge station support --> + <link name="${name}_support_link"> + <inertial> + <mass value="0.20000000"/> + <origin xyz="0.00000000 0.00000000 0.25000000" rpy="0 0 0"/> + <inertia ixx="0.00417484" ixy="0.0" ixz="0.0" iyy="0.00417484" iyz="0.0" izz="0.00001634" /> + </inertial> + <visual> + <origin xyz="0 0 0" rpy="0 0 0"/> + <geometry> + <mesh filename="package://darwin_description/meshes/charge/charge_support.stl"/> + </geometry> + </visual> + <collision> + <origin xyz="0 0 0" rpy="0 0 0"/> + <geometry> + <mesh filename="package://darwin_description/meshes/charge/charge_support.stl"/> + </geometry> + </collision> + </link> + + <joint name="${name}_support_joint" type="fixed"> + <xacro:insert_block name="origin" /> + <parent link="${parent}_link"/> + <child link="${name}_support_link"/> + </joint> + + <!-- charge station far QR --> + <link name="${name}_far_qr_link"> + <inertial> + <mass value="0.10000000"/> + <origin xyz="0.00000000 0.00000000 0.000000" rpy="0 0 0"/> + <inertia ixx="0.00017000" ixy="0.0" ixz="0.0" iyy="0.00017000" iyz="0.0" izz="0.00017333" /> + </inertial> + <visual> + <origin xyz="0 0 0" rpy="0 0 0"/> + <geometry> + <mesh filename="package://darwin_description/meshes/charge/far_qr.stl"/> + </geometry> + </visual> + <collision> + <origin xyz="0 0 0" rpy="0 0 0"/> + <geometry> + <mesh filename="package://darwin_description/meshes/charge/far_qr.stl"/> + </geometry> + </collision> + </link> + + <joint name="${name}_far_qr_joint" type="fixed"> + <origin xyz="0.0 0.0 0.4" rpy="0 0 0"/> + <parent link="${name}_support_link"/> + <child link="${name}_far_qr_link"/> + </joint> + + <xacro:qrcode name="${name}_north" parent="${name}_far_qr" code="N1" size="0.07"> + <origin xyz="0.0501 0.0 0.0" rpy="-1.5707 0 1.5707" /> + </xacro:qrcode> + + <xacro:qrcode name="${name}_south" parent="${name}_far_qr" code="S1" size="0.07"> + <origin xyz="-0.0501 0.0 0.0" rpy="-1.5707 0 -1.5707" /> + </xacro:qrcode> + + <xacro:qrcode name="${name}_west" parent="${name}_far_qr" code="W1" size="0.07"> + <origin xyz="0.0 0.0501 0.0" rpy="1.5707 3.14159 0" /> + </xacro:qrcode> + + <xacro:qrcode name="${name}_east" parent="${name}_far_qr" code="E1" size="0.07"> + <origin xyz="0.0 -0.0501 0.0" rpy="1.5707 3.14159 3.14159 " /> + </xacro:qrcode> + + <!-- charge station connector --> + <link name="${name}_connector_link"> + <inertial> + <mass value="0.10000000"/> + <origin xyz="0.00000000 0.00000000 0.000000" rpy="0 0 0"/> + <inertia ixx="0.00014464" ixy="0.0" ixz="0.0" iyy="0.00014464" iyz="0.0" izz="0.00028761" /> + </inertial> + <visual> + <origin xyz="0 0 0" rpy="0 0 0"/> + <geometry> + <mesh filename="package://darwin_description/meshes/charge/connector.stl"/> + </geometry> + </visual> + <collision> + <origin xyz="0 0 0" rpy="0 0 0"/> + <geometry> + <mesh filename="package://darwin_description/meshes/charge/connector.stl"/> + </geometry> + </collision> + </link> + + <joint name="${name}_connector_joint" type="fixed"> + <origin xyz="0.0 0.0 0.2" rpy="0 0 0"/> + <parent link="${name}_support_link"/> + <child link="${name}_connector_link"/> + </joint> + + <!-- charge station near_qr --> + <link name="${name}_near_qr_link"> + <inertial> + <mass value="0.10000000"/> + <origin xyz="0.00000000 0.00000000 0.000000" rpy="0 0 0"/> + <inertia ixx="0.00008564" ixy="0.0" ixz="0.0" iyy="0.00008564" iyz="0.0" izz="0.00016968" /> + </inertial> + <visual> + <origin xyz="0 0 0" rpy="0 0 0"/> + <geometry> + <mesh filename="package://darwin_description/meshes/charge/near_qr.stl"/> + </geometry> + </visual> + <collision> + <origin xyz="0 0 0" rpy="0 0 0"/> + <geometry> + <mesh filename="package://darwin_description/meshes/charge/near_qr.stl"/> + </geometry> + </collision> + </link> + + <joint name="${name}_near_qr_joint" type="fixed"> + <origin xyz="0.0 0.0 0.3" rpy="0 0 0"/> + <parent link="${name}_support_link"/> + <child link="${name}_near_qr_link"/> + </joint> + + <gazebo reference="${name}_support_link"> +<!-- <gravity>true</gravity> + <selfCollide>false</selfCollide> + <maxContacts>10</maxContacts> + <dampingFactor>0.2</dampingFactor> + <maxVel>0.0</maxVel> + <minDepth>0.0</minDepth> + <mu1>0.200000</mu1> + <mu2>0.200000</mu2> + <kp>0.0</kp> + <kd>0.0</kd>--> + </gazebo> + +<!-- <gazebo reference="${name}_support_joint"> + <implicitSpringDamper>true</implicitSpringDamper> + <stopCfm>0.0</stopCfm> + <stopErp>0.0</stopErp> + </gazebo>--> + + </xacro:macro> +</root> -- GitLab