Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Beetle][WIP] latest version for real platform #611

Open
wants to merge 340 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
340 commits
Select commit Hold shift + click to select a range
f9b0513
[Beetle] create the new scritpt for multi robot joy control
sugihara-16 Sep 15, 2023
3414797
[Beetle] add some test codes
sugihara-16 Sep 15, 2023
61aead4
Merge remote-tracking branch 'sugihara/develop/Beetle_test' into deve…
sugihara-16 Sep 15, 2023
9e1c3ba
[Beetle] modified vel nav thresh
sugihara-16 Sep 15, 2023
5b31162
[Spinal][AttitudeControl] add nan value checker for gimbal angles
sugihara-16 Jul 31, 2023
dc39f77
[Spinal][Controller] modified the condition for updating torque alloc…
sugihara-16 Aug 17, 2023
c4a1353
[Beetle] modified beetle nav to support yaw navigation in assembled s…
sugihara-16 Sep 15, 2023
fec08f7
[Beetle][Navigation] workaround to support roll pitch rotation when a…
sugihara-16 Sep 15, 2023
dfc29bd
[Navigation] making joystick callback fuction virtual
sugihara-16 Sep 16, 2023
cf91a1b
[Gimbalrotor][Navigation] add accessors about baselink rotation
sugihara-16 Sep 16, 2023
e4c6157
[Beetle][Navigation] add joy command to control roll pitch angles
sugihara-16 Sep 16, 2023
430b32d
[Beetle][Navigation] modified param about roll pitch rotation and alt…
sugihara-16 Sep 16, 2023
8ebd33f
Merge branch 'master' into develop/gimbal_rotor_rebase
sugihara-16 Sep 17, 2023
5d98dae
[Gimbalrotor] modified include file paths to support new system confi…
sugihara-16 Sep 17, 2023
74975f8
[Gimbalrotor] add 'rm' and 'sim' args in bringup
sugihara-16 Sep 17, 2023
856fcc5
[Beetle] create a new script for the disassembly motion
sugihara-16 Sep 27, 2023
ffc32a6
[Beetle] create a new script to send command to kondo servo
sugihara-16 Sep 27, 2023
f46514f
[Beetle] create a new scritp for the assembly flag publication
sugihara-16 Sep 27, 2023
b289d6e
add a new auto installation of packages about docking mech
sugihara-16 Sep 28, 2023
46dcf17
[Beetle][Nav] modified discription about target pos candidate.
sugihara-16 Oct 9, 2023
80129b5
[Beetle][nav] fix a wrong indent
sugihara-16 Oct 9, 2023
4c7b8db
[Beetle] made disassembly demo python module
sugihara-16 Oct 14, 2023
7a0a497
[Beetle][Navigation] workaround disassembly motion
sugihara-16 Oct 14, 2023
cb293a8
[Beetle] modified default robot id
sugihara-16 Oct 14, 2023
84111cf
Merge remote-tracking branch 'sugihara/develop/Beetle_test' into deve…
sugihara-16 Oct 14, 2023
46fcba1
[Beetle] fix bug aroung navigation
sugihara-16 Oct 15, 2023
092437a
[Beetle] make assembly demo python module
sugihara-16 Oct 15, 2023
d197a2e
[Beetle][Assemble] workaround assemble demo script
sugihara-16 Oct 31, 2023
a6bf1a0
[Beetle][Disassemble] modified some detail in disassemble demo to imp…
sugihara-16 Oct 31, 2023
d7dad3b
[Beetle] modified assembled nav script
sugihara-16 Oct 31, 2023
8bd52c6
[Beetle] change the default control mode in simulation
sugihara-16 Oct 31, 2023
4243e4f
[Beetle] modified initial assemble script
sugihara-16 Oct 31, 2023
e779c7e
[Beetle][Navigation] workaround setting new target coordinate when as…
sugihara-16 Oct 31, 2023
e16afe1
[Beetle][Model]workaround calculate distance between module coord and…
sugihara-16 Oct 31, 2023
f58bc3c
[Beeltle][Model] add new member variant
sugihara-16 Oct 31, 2023
f2b5efd
[Beetle][Imu] add imu plugin to obtain filterd giro info
sugihara-16 Oct 31, 2023
bcf72fd
[Gimbalrotor][Controller] add new accessor for target wrench
sugihara-16 Oct 31, 2023
e32f70f
[Beetle][Controller] add external wrench estimation function
sugihara-16 Oct 31, 2023
8003928
[Beetle][Imu][Debug] enable imu sensor plugin
sugihara-16 Oct 31, 2023
c1225d0
[Beetle][Debug] workaround CoM<->CoG conversion
sugihara-16 Nov 5, 2023
682d745
[Beetle][Controller] add feedforward term to compensate external wrench
sugihara-16 Nov 6, 2023
8bcd13f
[Ants] change quad urdf to the ants module
sugihara-16 Jul 1, 2023
4f83f83
[Ants] add docking mech plugin to urdf
sugihara-16 Jul 1, 2023
ceb5ce9
[Launch][Gimbalrotor] add new launch file where two modules spawn.
sugihara-16 Jun 16, 2023
103c07e
[Teleop] create new teleop script for multiple robots
sugihara-16 Jul 2, 2023
5d7d31f
[Ants][Navigation] create new assemby strategy with smach (currently …
sugihara-16 Jul 5, 2023
8bd8c31
[Ants] create new lanuch file for three module spawness.
sugihara-16 Jul 5, 2023
a75946d
[Navigation] add Baselink target mode in z axis position nav.
sugihara-16 Jul 7, 2023
601f7bc
[Ants] modified bringup launch
sugihara-16 Jul 10, 2023
f5b57c3
[Ants] modified assembly motion strategy to support multiple modules.
sugihara-16 Jul 10, 2023
ed0178e
[Ants] create new launch in which three modules spawn.
sugihara-16 Jul 10, 2023
80e6492
[Ants] workaround the control mode that calculate gimbal angles in pc.
sugihara-16 Jul 10, 2023
ccd1927
[Ants] create a new launch file for assmbly tasks.
sugihara-16 Jul 10, 2023
5aa2e6a
[Ants] add a new launch file in which four modules spawn
sugihara-16 Jul 10, 2023
6393e41
[Ants] modified some tolerance in assembly motion.
sugihara-16 Jul 10, 2023
bcb1af9
[Beetle] create new package for beetle.
sugihara-16 Jul 10, 2023
ba63fac
[Gimbalrotor] remove needless files and portions for normal gimbalrotor.
sugihara-16 Jul 10, 2023
df2c836
[Beetle] refacotr beetle urdf using rotor arm macro.
sugihara-16 Jul 10, 2023
28525f1
[Beetle] modified plugins for beetle.
sugihara-16 Jul 11, 2023
988932c
[Beetle] add a variable frame on the contact point.
sugihara-16 Jul 11, 2023
cd8ab2a
[Beetle] modified cmakefile
sugihara-16 Jul 11, 2023
344895d
[Beetle] add tf from cog to contact point
sugihara-16 Jul 11, 2023
80859a8
[Beetle] override navcallback to add a new control frame on the conta…
sugihara-16 Jul 11, 2023
bf50293
[Beetle] add script and launch for the construction with four modules.
sugihara-16 Jul 11, 2023
2e4b8f0
Revert "[Navigation] add Baselink target mode in z axis position nav."
sugihara-16 Jul 11, 2023
d33dec1
[Beetle] modified spawn position of launch file
sugihara-16 Jul 15, 2023
d730d4a
[Beetle] modified navigation plugin for a axis nav
sugihara-16 Jul 15, 2023
bd5d00a
[Beelte] modified some threshold in bridge construction demo.
sugihara-16 Jul 15, 2023
a0e063e
[Kondo] revert servo callback
sugihara-16 Jul 15, 2023
44a8c4f
[Beetle][test] modified urdf for test module
sugihara-16 Jul 15, 2023
aa46730
[beetle] modified motor pofile based on real machine test
sugihara-16 Jul 15, 2023
36e9b32
[Beetle] modified control gains.
sugihara-16 Jul 31, 2023
bbf0310
[Beetle] modified rotor direction
sugihara-16 Jul 31, 2023
d3dd686
[Beetle][Test] modified robot's urdf for test version
sugihara-16 Jul 31, 2023
534857b
[Beetle][Motor test] modified minimum pwm.
sugihara-16 Aug 17, 2023
b1eae05
[Spinal][Kondo] add servo state publisher.
sugihara-16 Aug 17, 2023
6609c89
[Beetle][Gain] modified PID control gain for test airframe.
sugihara-16 Aug 17, 2023
e46cd66
[Beetle] modified navigation yaml
sugihara-16 Aug 17, 2023
c589e0b
[Beetle] modified PID gains for test airframe.
sugihara-16 Aug 17, 2023
855037b
[Beetle] modified rotational speed of baselink.
sugihara-16 Aug 19, 2023
e2d390f
[Beetle][Navigator] add a new subscriber for assembly flag
sugihara-16 Aug 21, 2023
075a327
[Beetle] modified some details of assembly flag registration
sugihara-16 Aug 21, 2023
f8e495e
[Beetle][Modle] add a new process to calculate the center of moving w…
sugihara-16 Aug 21, 2023
7b7fad2
[Beetle][Model] add accessors for the coordinate of moving point.
sugihara-16 Aug 24, 2023
453f288
[Beetle][Navigation] work around navigation based on center of moving.
sugihara-16 Aug 24, 2023
64f34f8
[Beetle][launch] add a few modifications to two module spawn launch
sugihara-16 Aug 24, 2023
86fa723
[Beetle][script] create new intermediate node for navigation commands
sugihara-16 Aug 24, 2023
52a4d66
[Beetle] modified motor profile for 3wings ver.
sugihara-16 Sep 7, 2023
1630378
[Beetle] fix a bag in assemble navigation script
sugihara-16 Sep 8, 2023
9632864
[Beetle] add multiple joy stick launch
sugihara-16 Sep 8, 2023
10b6a21
[Beetle] create the new scritpt for multi robot joy control
sugihara-16 Sep 15, 2023
8925fec
[Beetle] add some test codes
sugihara-16 Sep 15, 2023
45980d1
[Beetle] modified sensor launch to support multi streaming id of mocap
sugihara-16 Sep 9, 2023
2eae3e2
[Beetle] modified vel nav thresh
sugihara-16 Sep 15, 2023
bedbb79
[Beetle] modified beetle nav to support yaw navigation in assembled s…
sugihara-16 Sep 15, 2023
a604855
[Beetle][Navigation] workaround to support roll pitch rotation when a…
sugihara-16 Sep 15, 2023
f4b693b
[Navigation] making joystick callback fuction virtual
sugihara-16 Sep 16, 2023
3beea56
[Gimbalrotor][Navigation] add accessors about baselink rotation
sugihara-16 Sep 16, 2023
7ff8bb8
[Beetle][Navigation] add joy command to control roll pitch angles
sugihara-16 Sep 16, 2023
c1e5dc4
[Beetle][Navigation] modified param about roll pitch rotation and alt…
sugihara-16 Sep 16, 2023
71fbf4d
[Beetle] create a new script for the disassembly motion
sugihara-16 Sep 27, 2023
5f85f22
[Beetle] create a new script to send command to kondo servo
sugihara-16 Sep 27, 2023
e71d172
[Beetle] create a new scritp for the assembly flag publication
sugihara-16 Sep 27, 2023
ada786a
[Beetle][Nav] modified discription about target pos candidate.
sugihara-16 Oct 9, 2023
2b18969
[Beetle][nav] fix a wrong indent
sugihara-16 Oct 9, 2023
bb8f0f4
[Beetle] made disassembly demo python module
sugihara-16 Oct 14, 2023
18a6376
[Beetle][Navigation] workaround disassembly motion
sugihara-16 Oct 14, 2023
875150f
[Beetle] modified default robot id
sugihara-16 Oct 14, 2023
ea8141b
add a new auto installation of packages about docking mech
sugihara-16 Sep 28, 2023
6a92805
[Beetle] fix bug aroung navigation
sugihara-16 Oct 15, 2023
f09f0ce
[Beetle] make assembly demo python module
sugihara-16 Oct 15, 2023
51813d7
[Beetle][Assemble] workaround assemble demo script
sugihara-16 Oct 31, 2023
45818de
[Beetle][Disassemble] modified some detail in disassemble demo to imp…
sugihara-16 Oct 31, 2023
ee693a7
[Beetle] modified assembled nav script
sugihara-16 Oct 31, 2023
a861897
[Beetle] change the default control mode in simulation
sugihara-16 Oct 31, 2023
2be0866
[Beetle] modified initial assemble script
sugihara-16 Oct 31, 2023
0f08701
[Beetle][Navigation] workaround setting new target coordinate when as…
sugihara-16 Oct 31, 2023
76da841
[Beetle][Model]workaround calculate distance between module coord and…
sugihara-16 Oct 31, 2023
fec0779
[Beeltle][Model] add new member variant
sugihara-16 Oct 31, 2023
dcbb8d2
[Beetle][Imu] add imu plugin to obtain filterd giro info
sugihara-16 Oct 31, 2023
942ea66
[Gimbalrotor][Controller] add new accessor for target wrench
sugihara-16 Oct 31, 2023
1e52f0b
[Beetle][Controller] add external wrench estimation function
sugihara-16 Oct 31, 2023
2b75ba3
[Beetle][Imu][Debug] enable imu sensor plugin
sugihara-16 Oct 31, 2023
d3c30d7
[Beetle][Debug] workaround CoM<->CoG conversion
sugihara-16 Nov 5, 2023
a29d490
[Beetle][Controller] add feedforward term to compensate external wrench
sugihara-16 Nov 6, 2023
dbc3acf
[Beetle][Navigation] modified err compensation during switching
sugihara-16 Nov 10, 2023
f24efe4
[Beetle] modified takeoff time thresh
sugihara-16 Nov 10, 2023
09f99ca
[Beetle] workaround implimenting PD+wrench_compensation control mode
sugihara-16 Nov 10, 2023
c1c4e68
Merge branch 'develop/Beetle_rebased' into develop/Beetle_test
sugihara-16 Nov 10, 2023
97e62b6
[Beetle][script] add swith script and launch
sugihara-16 Nov 11, 2023
fe1b59b
[Beetle][Model] change the way to determine leader module
sugihara-16 Nov 11, 2023
2fe4643
[Beetle][scritp] debug about disassembly motion with three or more mo…
sugihara-16 Nov 13, 2023
46526a4
[Beetle] renamed some python modules
sugihara-16 Nov 13, 2023
0d59872
[Beetle] debug around external wrench compensation.
sugihara-16 Nov 13, 2023
2931e96
[trirotor] add trirotor package
sugikazu75 Apr 6, 2023
0dfc2dc
[trirotor] add configs
sugikazu75 Apr 6, 2023
0bd8dcf
[trirotor] add urdf models
sugikazu75 Apr 6, 2023
9482632
[trirotor] add launchers
sugikazu75 Apr 6, 2023
344b832
[trirotor][control] add plugin of conrtol and model
sugikazu75 Apr 6, 2023
3697856
[trirotor] add dae of baselink of trirotor
sugikazu75 Apr 7, 2023
75e59de
[trirotor] add plugins directory to catkin_package_share_destination
sugikazu75 Apr 9, 2023
7c5b90c
[trirotor][navigation] add navigation of trirotor
sugikazu75 Apr 17, 2023
4ffe722
[Trirotor][model] override model update function in order to consider…
Apr 30, 2023
2304a96
[Trirotor][Controller] add coordination conversion of target wrench.
Apr 30, 2023
4b99650
[Trirotor][Controller] add another roll-pitch gain for simulation.
Apr 30, 2023
aefd62d
[Trirotor][Cotroller] add thrust mask calculation function
Apr 30, 2023
fff0f80
[Trirotor][Controller] modified gains for simulation
Apr 30, 2023
e9b6355
[Gimbalrotor][new] add new package for gimbalrotor robot based on tri…
May 1, 2023
f1722c8
[Gimbalrotor][Controller&Model] Workaound new controling and modeling…
May 8, 2023
cb68e68
[Gimbalrotor][URDF]add urdf model of ant module
May 9, 2023
0104903
[Gimbalrotor][URDF]modified gimbalrotor urdf
May 9, 2023
e95b363
[Gimbalrotor][Model] delete unused fuction for mask calculation.
May 9, 2023
6ac0dc5
[Gimbalrotor][Control]add the new mode in which gimbale angles are ca…
May 14, 2023
66876a6
[Spinal][Controller]add the new mode in which target gimbal angles ar…
May 14, 2023
3a76f61
[Gimbalrotor][URDF]modified upper limit angle of gimbal joint for KRS…
May 14, 2023
cb8b88f
Merge remote-tracking branch 'kazuki/develop/spinal/jsk_lib/kondo' in…
sugihara-16 Jun 19, 2023
5a6d881
[Spinal][KondoServo] add converter from Kondoposition to rad and the …
sugihara-16 Jun 20, 2023
ab1d287
[Spinal][KondoServo] add new accessor to change the servo target_post…
sugihara-16 Jun 20, 2023
c82c691
[Spinal][Controller]share the pointer of kondo servo instance to cont…
sugihara-16 Jun 20, 2023
c284e88
[Spinal][KondoServo][WIP] supressed uart read fanction and modified f…
sugihara-16 Jun 23, 2023
4ea566c
[Spinal][Flightcontroller]Add a new portion to send target gimbal ang…
sugihara-16 Jun 23, 2023
b040f6a
[Gimbalrotor] add joint state publisher for updating robot model.
sugihara-16 Jun 23, 2023
aca4bfc
[Gimbalrotor] modified estimation mode
sugihara-16 Jun 26, 2023
61d8a87
[Gimblarotor][Controller] fix bag aboud undifined parameter.
sugihara-16 Jun 26, 2023
858e1d0
[Gimbalrotor] modified battery threshold.
sugihara-16 Jun 26, 2023
802d1f0
[Gimbalrotor] Refactor for urdf and config files in order to support …
sugihara-16 Jun 27, 2023
176ae91
[Gimbalrotor] refactor for the file system of gimbal rotor package.
sugihara-16 Jun 28, 2023
331eea0
[Gimbalrotor] modified pid gains for quadrotor simulation.
sugihara-16 Jun 28, 2023
4e0e6bb
[Gimbalrotor] remove unused portion in gimbalrotor robot model
sugihara-16 Jul 10, 2023
c08a00e
[Spinal][AttitudeControl] add nan value checker for gimbal angles
sugihara-16 Jul 31, 2023
85dc0e6
[Spinal][Controller] modified the condition for updating torque alloc…
sugihara-16 Aug 17, 2023
061fc47
[Gimbalrotor] modified include file paths to support new system confi…
sugihara-16 Sep 17, 2023
3cd84eb
[Gimbalrotor] add 'rm' and 'sim' args in bringup
sugihara-16 Sep 17, 2023
a3b98c2
[Beetle] add new feature that change CoM conversion when the assemble…
sugihara-16 Nov 14, 2023
6bb7d4a
[Beetle] add new parameter in disassembly motion
sugihara-16 Nov 14, 2023
64be5fd
[Beetle] add two directional reconfig motion
sugihara-16 Nov 15, 2023
60782fd
[Beetle] create assembly and disassembly demo script
sugihara-16 Nov 15, 2023
33b3907
[Beetle] change robot name in multi egent world
sugihara-16 Nov 18, 2023
97a27f3
[Beetle] add pd and wrench comp mode for yaw
sugihara-16 Nov 18, 2023
4aec9bd
[Gimbalrotor] fixed joint_state bag
sugihara-16 Nov 22, 2023
174af79
[Beetle] inactivate wrench comp in z axis
sugihara-16 Nov 23, 2023
46537d9
[Sensor][Imu] add low-pass filter to base imu plugin
sugihara-16 Nov 24, 2023
86f295d
[Dragon][Imu]remove dupricated functions in imu plugin
sugihara-16 Nov 24, 2023
c77e4f0
[Controller] making featues around external wrench estimation common one
sugihara-16 Nov 24, 2023
3f13c20
[Hydrus][controller] workaround activating wrench estimation in hydrus
sugihara-16 Nov 24, 2023
cfb08fe
[Beetle] add scripts for analysis
sugihara-16 Nov 25, 2023
a86e134
Merge branch 'develop/Beetle_test' into develop/Beetle
sugihara-16 Nov 25, 2023
f9929ec
[Beetle] modified some parameters for switching
sugihara-16 Nov 26, 2023
c772364
Merge remote-tracking branch 'sugihara/develop/gimbal_rotor' into dev…
sugihara-16 Nov 26, 2023
8d52d85
Merge branch 'develop/gimbal_rotor' into develop/Beetle
sugihara-16 Nov 26, 2023
ded4e44
Merge branch 'PR/controller/external_wrench' into develop/Beetle
sugihara-16 Nov 26, 2023
149cbca
Merge remote-tracking branch 'origin/master' into develop/gimbal_rotor
sugihara-16 Nov 26, 2023
64de36c
[Gimablrotor] add an attribute of control loop duration to initialize…
sugihara-16 Nov 26, 2023
cd17447
Merge branch 'develop/gimbal_rotor' into develop/Beetle
sugihara-16 Nov 26, 2023
41dad5e
[WIP][Beetle][Nav] modified joy and nav callback to support current m…
sugihara-16 Nov 26, 2023
535ecb4
[Beetle][controller] workaround to use common external wrench estimation
sugihara-16 Nov 26, 2023
eb5b3a8
[Beetle] workaroung activating wrench estimation in beetle
sugihara-16 Nov 27, 2023
15330c7
[Beetle] modified launch file name for gazebo simulation
sugihara-16 Nov 27, 2023
7b718dd
[Beetle] make new message
sugihara-16 Nov 27, 2023
22b8ebe
[Beetle] add subscriber and publisher for estimated external wrench f…
sugihara-16 Nov 27, 2023
6b148a8
[Beetle][Controller] workaround to calculate interactional wrench
sugihara-16 Nov 28, 2023
2f9a573
[Beetle][model] modified sort direction
sugihara-16 Nov 28, 2023
4b20f2f
[Beetle] workaround to use new wrench comp strategy in assembled state.
sugihara-16 Nov 29, 2023
5389143
[Beetle] decrease cutoff freq for lpf of imu.
sugihara-16 Nov 29, 2023
c31d897
[Beetle] add new internal wrench compensation method: i_term reconfig…
sugihara-16 Dec 2, 2023
1dc273d
[Beetle] start wrench compensation from takeoff state
sugihara-16 Dec 4, 2023
f898221
[Beetle] dubug for wrench comp
sugihara-16 Dec 4, 2023
9e07b02
[Beetle][Navigation] supporting new nav mode
sugihara-16 Dec 5, 2023
1644eb1
[Beetle] remove unused include
Dec 5, 2023
6b37d87
[Beetle] modified urdf as to value
sugihara-16 Dec 5, 2023
b4c872d
[Beetle] modified the method to update wrench compensation
sugihara-16 Dec 6, 2023
e348098
[WIP][Beetle] add wrench comp for torque elements
sugihara-16 Dec 6, 2023
fd01e48
[Beetle] workaround to switch control mode smoothly
sugihara-16 Dec 8, 2023
c07f2ca
[Gimbalrotor] add new control mode where i terms of roll and pitch ar…
sugihara-16 Dec 9, 2023
a70473c
[Gimbalrotor] set another rpy gain if i term is calculated in pc
sugihara-16 Dec 9, 2023
59aced3
[Beetle] add i comp reset when disassembled
sugihara-16 Dec 9, 2023
04cdd37
[Spinal][Gimbalcontrol] modified gimbal control publish rate
sugihara-16 Dec 9, 2023
db08f34
[Gimbalrotor] trivial debug in controller
sugihara-16 Dec 10, 2023
a72f1ce
[Beetle] modified pid parameters
sugihara-16 Dec 10, 2023
9caf528
[Beetle] modified the method to calc ff wrench to pid control.
sugihara-16 Dec 13, 2023
381ee6b
[Beetle] modified the method to change wrench comp gain
sugihara-16 Dec 14, 2023
cf33ef2
[Beetle] add a publisher for wrench compensation pid and override res…
sugihara-16 Dec 15, 2023
fa7cbfc
[Gimablrotor] modified condition around gain sending.
sugihara-16 Dec 15, 2023
e37002c
[Beetle][Controller] debug around the method to determine proper gain…
sugihara-16 Dec 15, 2023
e1f59ca
[Beetle] debug around assembly motion script
sugihara-16 Dec 15, 2023
a2a7442
[Beetle] debug around switch cmd
sugihara-16 Dec 15, 2023
3c2cc92
[Beetle] modified gains for wrench comp
sugihara-16 Dec 15, 2023
806192b
[Beetle][Model] add accessor to leader id.
sugihara-16 Dec 19, 2023
52227d7
[Beetle][controller] add feedfoward internal wrench term.
sugihara-16 Dec 19, 2023
fcf5451
[Beetle][urdf] add battery model
sugihara-16 Dec 20, 2023
0f40b20
[Beetle][urdf] modified inertia info of base link.
sugihara-16 Dec 22, 2023
8c563ee
[Navigation] add indicator of remaining battery.
sugihara-16 Dec 24, 2023
f1258f1
[Beetle] add navi callback for assembled state
sugihara-16 Dec 24, 2023
5f719d8
[Beetle][test] create script for lemniscate trajectory tracking.
sugihara-16 Dec 26, 2023
4c60d57
[Beetle][launch] workaround change spawn positions
sugihara-16 Dec 26, 2023
212ed10
[Beetle] modified some parameter for real machine
sugihara-16 Jan 9, 2024
d1e36f9
Merge remote-tracking branch 'sugihara/develop/Beetle' into develop/B…
sugihara-16 Jan 9, 2024
863bd32
[Beetle] add new topic that can change rotation of all modules
sugihara-16 Feb 6, 2024
3d509f1
[Beetle] modified some detail of rotational nav by joystick
sugihara-16 Feb 7, 2024
ea5e7da
Merge remote-tracking branch 'sugihara/develop/Beetle' into develop/B…
sugihara-16 Feb 7, 2024
14155d2
[Beelte][simulation] modified wrench comp i gain in simulation
sugihara-16 Feb 19, 2024
f9b377a
[Beetle] modified servo angle when the mechanism is opened
sugihara-16 Feb 19, 2024
d3952d7
[Beetle][Reconfig] modifeid some parameters of reconfig motion
sugihara-16 Feb 19, 2024
3911bbb
[Beetle][recofig] modified reconfig demo script in order to support t…
sugihara-16 Feb 19, 2024
4729474
[Beetle] change some detail of switch script
sugihara-16 Feb 19, 2024
f57d225
[Beetle][simu] add new launch where eight modules spawn
sugihara-16 Feb 19, 2024
a12aff5
[Beetle][test] add servo test script
sugihara-16 Feb 19, 2024
ce8b8ea
Merge branch 'master' into develop/Beetle
sugihara-16 Apr 14, 2024
4bea290
[Beetle] workaround catching up to latest master
sugihara-16 Apr 14, 2024
35b2a2c
[Beetle][Nav] fixed bug in landing motion
sugihara-16 Apr 14, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
#include <aerial_robot_control/control/base/base.h>
#include <aerial_robot_control/control/utils/pid.h>
#include <aerial_robot_control/PIDConfig.h>
#include <aerial_robot_estimation/sensor/imu.h>
#include <aerial_robot_msgs/DynamicReconfigureLevels.h>
#include <aerial_robot_msgs/PoseControlPid.h>
#include <angles/angles.h>
Expand All @@ -56,7 +57,8 @@ namespace aerial_robot_control
{
public:
PoseLinearController();
virtual ~PoseLinearController() = default;
virtual ~PoseLinearController();

void virtual initialize(ros::NodeHandle nh,
ros::NodeHandle nhp,
boost::shared_ptr<aerial_robot_model::RobotModel> robot_model,
Expand All @@ -67,8 +69,21 @@ namespace aerial_robot_control
virtual bool update() override;
virtual void reset() override;

const Eigen::VectorXd getTargetWrenchAccCog()
{
std::lock_guard<std::mutex> lock(wrench_mutex_);
return target_wrench_acc_cog_;
}
void setTargetWrenchAccCog(const Eigen::VectorXd target_wrench_acc_cog)
{
std::lock_guard<std::mutex> lock(wrench_mutex_);
target_wrench_acc_cog_ = target_wrench_acc_cog;
}


protected:
ros::Publisher pid_pub_;
ros::Publisher estimate_external_wrench_pub_;

std::vector<PID> pid_controllers_;
std::vector<boost::shared_ptr<PidControlDynamicConfig> > pid_reconf_servers_;
Expand All @@ -88,11 +103,25 @@ namespace aerial_robot_control
tf::Vector3 rpy_, target_rpy_;
tf::Vector3 omega_, target_omega_;

std::mutex wrench_mutex_;
boost::thread wrench_estimate_thread_;
Eigen::VectorXd init_sum_momentum_;
Eigen::VectorXd est_external_wrench_;
Eigen::MatrixXd momentum_observer_matrix_;
Eigen::VectorXd integrate_term_;
double prev_est_wrench_timestamp_;
bool wrench_estimate_flag_;
Eigen::VectorXd target_wrench_acc_cog_;


virtual void controlCore();
virtual void sendCmd();


void cfgPidCallback(aerial_robot_control::PIDConfig &config, uint32_t level, std::vector<int> controller_indices);
void startWrenchEstimation();
virtual void externalWrenchEstimate();

};

};
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,10 @@ namespace aerial_robot_control
const double p_gain = 0, const double i_gain = 0, const double d_gain = 0,
const double limit_sum = 1e6, const double limit_p = 1e6, const double limit_i = 1e6, const double limit_d = 1e6,
const double limit_err_p = 1e6, const double limit_err_i = 1e6, const double limit_err_d = 1e6):
name_(name), result_(0), err_p_(0), err_i_(0), err_i_prev_(0), err_d_(0),
name_(name), result_(0), err_p_(0), err_p_prev_(0), err_i_(0), err_i_prev_(0), err_d_(0),
target_p_(0), target_d_(0), val_p_(0), val_d_(0),
p_term_(0), i_term_(0), d_term_(0)
p_term_(0), i_term_(0), d_term_(0),
i_comp_term_(0)
{
setGains(p_gain, i_gain, d_gain);
setLimits(limit_sum, limit_p, limit_i, limit_d, limit_err_p, limit_err_i, limit_err_d);
Expand All @@ -64,8 +65,23 @@ namespace aerial_robot_control
{
err_p_ = clamp(err_p, -limit_err_p_, limit_err_p_);
err_i_prev_ = err_i_;
err_i_ = clamp(err_i_ + err_p_ * du, -limit_err_i_, limit_err_i_);
err_d_ = clamp(err_d, -limit_err_d_, limit_err_d_);
err_i_ = clamp(err_i_ + err_p_ * du, -limit_err_i_, limit_err_i_) + i_comp_term_;

p_term_ = clamp(err_p_ * p_gain_, -limit_p_, limit_p_);
i_term_ = clamp(err_i_ * i_gain_, -limit_i_, limit_i_);
d_term_ = clamp(err_d_ * d_gain_, -limit_d_, limit_d_);

result_ = clamp(p_term_ + i_term_ + d_term_ + feedforward_term, -limit_sum_, limit_sum_);
}

virtual void updateWoVel(const double err_p, const double du, const double feedforward_term = 0)
{
err_p_prev_ = err_p_;
err_p_ = clamp(err_p, -limit_err_p_, limit_err_p_);
err_i_prev_ = err_i_;
err_d_ = clamp((err_p_ - err_p_prev_)/ du, -limit_err_d_, limit_err_d_);
err_i_ = clamp(err_i_ + err_p_ * du, -limit_err_i_, limit_err_i_) + i_comp_term_;

p_term_ = clamp(err_p_ * p_gain_, -limit_p_, limit_p_);
i_term_ = clamp(err_i_ * i_gain_, -limit_i_, limit_i_);
Expand All @@ -80,7 +96,9 @@ namespace aerial_robot_control
{
err_i_ = 0;
err_i_prev_ = 0;
err_p_prev_ = 0;
result_ = 0;
i_comp_term_ = 0;
}

const double& getPGain() const { return p_gain_; }
Expand Down Expand Up @@ -120,6 +138,9 @@ namespace aerial_robot_control
setLimitErrI(limit_err_i);
setLimitErrD(limit_err_d);
}
void setICompTerm(const double i_comp_term){ i_comp_term_ = i_comp_term; }
void setErrIRec(const double err_i_rec){ err_i_rec_ = err_i_rec; }
const double& getErrIRec() const { return err_i_rec_; }

const std::string getName() const { return name_;}
const double& getErrP() const { return err_p_; }
Expand All @@ -139,11 +160,14 @@ namespace aerial_robot_control
double result_;
double p_gain_, i_gain_, d_gain_;
double p_term_, i_term_, d_term_;
double err_p_, err_i_, err_i_prev_, err_d_;
double err_p_, err_p_prev_, err_i_, err_i_prev_, err_d_;
double err_i_rec_;
double limit_sum_, limit_p_, limit_i_, limit_d_;
double limit_err_p_, limit_err_i_, limit_err_d_;
double target_p_, target_d_;
double val_p_, val_d_;
double i_comp_term_;

};

};
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,8 @@ namespace aerial_robot_navigation
static constexpr float VOLTAGE_20P = 3.747;
static constexpr float VOLTAGE_10P = 3.683;
static constexpr float VOLTAGE_0P = 3.209;
float pre_battery_percentage_;



/* playstation dualschock 3 joystick */
Expand Down Expand Up @@ -256,6 +258,8 @@ namespace aerial_robot_navigation

bool param_verbose_;

bool joy_rotation_flag_;

uint8_t navi_state_;

int xy_control_mode_;
Expand All @@ -269,7 +273,7 @@ namespace aerial_robot_navigation
bool trajectory_mode_;
bool lock_teleop_;
ros::Time force_landing_start_time_;

double hover_convergent_start_time_;
double hover_convergent_duration_;
double land_check_start_time_;
Expand Down Expand Up @@ -346,8 +350,8 @@ namespace aerial_robot_navigation
virtual void rosParamInit();
void poseCallback(const geometry_msgs::PoseStampedConstPtr & msg);
void simpleMoveBaseGoalCallback(const geometry_msgs::PoseStampedConstPtr & msg);
void naviCallback(const aerial_robot_msgs::FlightNavConstPtr & msg);
void joyStickControl(const sensor_msgs::JoyConstPtr & joy_msg);
virtual void naviCallback(const aerial_robot_msgs::FlightNavConstPtr & msg);
virtual void joyStickControl(const sensor_msgs::JoyConstPtr & joy_msg);
void batteryCheckCallback(const std_msgs::Float32ConstPtr &msg);

virtual void halt() {}
Expand Down
115 changes: 114 additions & 1 deletion aerial_robot_control/src/control/base/pose_linear_controller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,15 @@ namespace aerial_robot_control
pid_msg_.yaw.d_term.resize(1);
}

PoseLinearController::~PoseLinearController()
{
if(wrench_estimate_flag_)
{
wrench_estimate_thread_.interrupt();
wrench_estimate_thread_.join();
}
}

void PoseLinearController::initialize(ros::NodeHandle nh,
ros::NodeHandle nhp,
boost::shared_ptr<aerial_robot_model::RobotModel> robot_model,
Expand Down Expand Up @@ -177,8 +186,11 @@ namespace aerial_robot_control
pid_reconf_servers_.push_back(boost::make_shared<PidControlDynamicConfig>(yaw_nh));
pid_reconf_servers_.back()->setCallback(boost::bind(&PoseLinearController::cfgPidCallback, this, _1, _2, std::vector<int>(1, YAW)));


pid_pub_ = nh_.advertise<aerial_robot_msgs::PoseControlPid>("debug/pose/pid", 10);

/* external wrench estimation*/
getParam<bool>(control_nh, "wrench_estimate_flag", wrench_estimate_flag_, false);
if(wrench_estimate_flag_) startWrenchEstimation();
}

void PoseLinearController::reset()
Expand Down Expand Up @@ -341,6 +353,75 @@ namespace aerial_robot_control
pid_pub_.publish(pid_msg_);
}

void PoseLinearController::externalWrenchEstimate()
{
const Eigen::VectorXd target_wrench_acc_cog = getTargetWrenchAccCog();

if(navigator_->getNaviState() != aerial_robot_navigation::HOVER_STATE &&
navigator_->getNaviState() != aerial_robot_navigation::LAND_STATE)
{
prev_est_wrench_timestamp_ = 0;
integrate_term_ = Eigen::VectorXd::Zero(6);
return;
}else if(target_wrench_acc_cog.size() == 0){
ROS_WARN("Target wrench value for wrench estimation is not setted.");
prev_est_wrench_timestamp_ = 0;
integrate_term_ = Eigen::VectorXd::Zero(6);
return;
}

Eigen::Vector3d vel_w, omega_cog; // workaround: use the filtered value
auto imu_handler = boost::dynamic_pointer_cast<sensor_plugin::Imu>(estimator_->getImuHandler(0));
tf::vectorTFToEigen(imu_handler->getFilteredVelCog(), vel_w);
tf::vectorTFToEigen(imu_handler->getFilteredOmegaCog(), omega_cog);
Eigen::Matrix3d cog_rot;
tf::matrixTFToEigen(estimator_->getOrientation(Frame::COG, estimate_mode_), cog_rot);

Eigen::Matrix3d inertia = robot_model_->getInertia<Eigen::Matrix3d>();
double mass = robot_model_->getMass();

Eigen::VectorXd sum_momentum = Eigen::VectorXd::Zero(6);
sum_momentum.head(3) = mass * vel_w;
sum_momentum.tail(3) = inertia * omega_cog;

Eigen::VectorXd target_wrench_cog = Eigen::VectorXd::Zero(6);
target_wrench_cog.head(3) = mass * target_wrench_acc_cog.head(3);
target_wrench_cog.tail(3) = inertia * target_wrench_acc_cog.tail(3);

Eigen::MatrixXd J_t = Eigen::MatrixXd::Identity(6,6);
J_t.topLeftCorner(3,3) = cog_rot;

Eigen::VectorXd N = mass * robot_model_->getGravity();
N.tail(3) = aerial_robot_model::skew(omega_cog) * (inertia * omega_cog);

if(prev_est_wrench_timestamp_ == 0)
{
prev_est_wrench_timestamp_ = ros::Time::now().toSec();
init_sum_momentum_ = sum_momentum; // not good
}

double dt = ros::Time::now().toSec() - prev_est_wrench_timestamp_;

integrate_term_ += (J_t * target_wrench_cog - N + est_external_wrench_) * dt;

est_external_wrench_ = momentum_observer_matrix_ * (sum_momentum - init_sum_momentum_ - integrate_term_);

Eigen::VectorXd est_external_wrench_cog = est_external_wrench_;
est_external_wrench_cog.head(3) = cog_rot.inverse() * est_external_wrench_.head(3);

geometry_msgs::WrenchStamped wrench_msg;
wrench_msg.header.stamp.fromSec(estimator_->getImuLatestTimeStamp());
wrench_msg.wrench.force.x = est_external_wrench_(0);
wrench_msg.wrench.force.y = est_external_wrench_(1);
wrench_msg.wrench.force.z = est_external_wrench_(2);
wrench_msg.wrench.torque.x = est_external_wrench_(3);
wrench_msg.wrench.torque.y = est_external_wrench_(4);
wrench_msg.wrench.torque.z = est_external_wrench_(5);
estimate_external_wrench_pub_.publish(wrench_msg);

prev_est_wrench_timestamp_ = ros::Time::now().toSec();
}

void PoseLinearController::cfgPidCallback(aerial_robot_control::PIDConfig &config, uint32_t level, std::vector<int> controller_indices)
{
using Levels = aerial_robot_msgs::DynamicReconfigureLevels;
Expand Down Expand Up @@ -374,4 +455,36 @@ namespace aerial_robot_control
}
}
}

void PoseLinearController::startWrenchEstimation()
{
estimate_external_wrench_pub_ = nh_.advertise<geometry_msgs::WrenchStamped>("estimated_external_wrench", 1);

est_external_wrench_ = Eigen::VectorXd::Zero(6);
init_sum_momentum_ = Eigen::VectorXd::Zero(6);
integrate_term_ = Eigen::VectorXd::Zero(6);
momentum_observer_matrix_ = Eigen::MatrixXd::Identity(6,6);
prev_est_wrench_timestamp_ = 0;

double force_weight, torque_weight;
ros::NodeHandle control_nh(nh_, "controller");
getParam<double>(control_nh, "momentum_observer_force_weight", force_weight, 10.0);
getParam<double>(control_nh, "momentum_observer_torque_weight", torque_weight, 10.0);
momentum_observer_matrix_.topRows(3) *= force_weight;
momentum_observer_matrix_.bottomRows(3) *= torque_weight;

wrench_estimate_thread_ = boost::thread([this]()
{
double update_rate;
ros::NodeHandle control_nh(nh_, "controller");
control_nh.param ("wrench_estimate_update_rate", update_rate, 100.0);

ros::Rate loop_rate(update_rate);
while(ros::ok())
{
externalWrenchEstimate();
loop_rate.sleep();
}
});
}
};
18 changes: 14 additions & 4 deletions aerial_robot_control/src/flight_navigation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ BaseNavigator::BaseNavigator():
joy_stick_heart_beat_(false),
joy_stick_prev_time_(0),
teleop_flag_(true),
land_check_start_time_(0)
land_check_start_time_(0),
pre_battery_percentage_(100)
{
setNaviState(ARM_OFF_STATE);
}
Expand Down Expand Up @@ -99,7 +100,7 @@ void BaseNavigator::batteryCheckCallback(const std_msgs::Float32ConstPtr &msg)
float average_voltage = voltage / bat_cell_;
float input_cell = voltage / VOLTAGE_100P;
float percentage = 0;
if(average_voltage > VOLTAGE_90P) percentage = (average_voltage - VOLTAGE_90P) / (VOLTAGE_100P - VOLTAGE_90P) * 10 + 90;
if(average_voltage > VOLTAGE_90P)percentage = (average_voltage - VOLTAGE_90P) / (VOLTAGE_100P - VOLTAGE_90P) * 10 + 90;
else if (average_voltage > VOLTAGE_80P) percentage = (average_voltage - VOLTAGE_80P) / (VOLTAGE_90P - VOLTAGE_80P) * 10 + 80;
else if (average_voltage > VOLTAGE_70P) percentage = (average_voltage - VOLTAGE_70P) / (VOLTAGE_80P - VOLTAGE_70P) * 10 + 70;
else if (average_voltage > VOLTAGE_60P) percentage = (average_voltage - VOLTAGE_60P) / (VOLTAGE_70P - VOLTAGE_60P) * 10 + 60;
Expand All @@ -111,6 +112,11 @@ void BaseNavigator::batteryCheckCallback(const std_msgs::Float32ConstPtr &msg)
else percentage = (average_voltage - VOLTAGE_0P) / (VOLTAGE_10P - VOLTAGE_0P) * 10;

if (percentage > 100) percentage = 100;

if(percentage < pre_battery_percentage_ - 10){
pre_battery_percentage_ = percentage - (int)percentage % 10 + 10; // e.g. percentage = 85% -> 90%
ROS_WARN_STREAM("Battery : " << int(pre_battery_percentage_) <<"%");
}
if(percentage < 0)
{
/* can remove this information */
Expand Down Expand Up @@ -454,10 +460,14 @@ void BaseNavigator::joyStickControl(const sensor_msgs::JoyConstPtr & joy_msg)

teleop_reset_time_ = teleop_reset_duration_ + ros::Time::now().toSec();

double raw_x_cmd = joy_cmd.axes[PS3_AXIS_STICK_LEFT_UPWARDS];
double raw_y_cmd = joy_cmd.axes[PS3_AXIS_STICK_LEFT_LEFTWARDS];
double raw_x_cmd = 0;
double raw_y_cmd = 0;
double raw_z_cmd = joy_cmd.axes[PS3_AXIS_STICK_RIGHT_UPWARDS];
double raw_yaw_cmd = joy_cmd.axes[PS3_AXIS_STICK_RIGHT_LEFTWARDS];
if(!joy_rotation_flag_){
raw_x_cmd = joy_cmd.axes[PS3_AXIS_STICK_LEFT_UPWARDS];
raw_y_cmd = joy_cmd.axes[PS3_AXIS_STICK_LEFT_LEFTWARDS];
}

/* Motion: Z (Height) */
if(getNaviState() == HOVER_STATE)
Expand Down
Loading
Loading