Controlling the boat near the dock is probably more difficult than cars or air planes since swells/waves/winds can move the boat relative to the dock. The robot needs to read the water and wind to protect the boat from collisions.
As taxis, docking/taking on passengers is tricky since it needs to handle situations when people cling onto rails and risk getting stuck between the boat and the dock.
A single prop with a bow thruster, or especially without, can't move freely in the 2D space which makes it much more complicated because you have to move towards the dock with the correct angle depending on wind, current and what not. Then time your maneuvers while taking the environment and for example prop walk [2] and other effects into consideration.
[0]: https://en.wikipedia.org/wiki/Dynamic_positioning
[1]: https://www.youtube.com/watch?v=491RkaOYfr4 Volvo Penta Assisted Docking
The goal then for the robot is not to position itself in 2D space with meter-level precision, the goal is to behave reliably and predictably in the harbour under chaotic circumstances, with sub-meter precision. That requires predicting movements and drift, taking wind into account. Since this is almost impossible, skippers learn to read the water/wind to understand what is appropriate for safety distances, speed, angles, etc.
A road vehicle could just refuse to move if the environment becomes unrecognizable, but a boat keeps on moving, so the robot can not just "give up".
It's true that thrusters increase the manoeuvrability.
Wind and current doesn't really matter as long as you have dynamic position which abstracts it away as long as you keep within your power budget. The real hard part here is moving through a shifting environment, for example the current often reverses along banks. Especially in a river based harbor environment where you've created piers and what not disrupting the flow.
In a previous life I worked as a skipper in just those conditions, passenger ferries in the 25-40m sizes with a couple of hundred passengers in river harbour environment. Two props and bowthruster and you have to keep all the considerations you mention in account. Especially since you can't angle the stern without angling the bow (duh) when you're applying reverse thrust to dock. And with some speed forward you move the center of rotation forward making the bow thruster less effective.
It was actually easier with quite a strong wind since then that would overcome the current easily and you would lie on the wind margin side of things. If you come too high just make the docking take a bit longer so you would blow down and land perfectly. In almost calm conditions you would instead have to guess which would win that time, wind or current.
That said, the ones with two pods, one at each end you just balance things out and go straight to the dock.
For a layman, it sounds as the same kind of difficulty as controlling a drone in the air. It's not perception and identification of millions of different objects, neither it is predicting other driver's behaviour on the road — it's a physical process. Computers seem to be quite effective at adapting to that.
You are right though, being by the dock is harder although at this point, you are likely to have some kind of personnel to help tether the boat to the quay.
They are designing a self-driving boat without using sonars not radars due to their budget. It's fun but of little relevance to the real world. Most of their problems would be solved or at least heavily alleviated with access to the relevant sensors.
Still, that's quite impressive for a college project built on a shoe string.
Also, pirates would become a problem because taking over a ship without a crew would easier and way less risk.
Consider patrol drones. They look nothing like something an individual can get into.
About pirates, no, they work will become much harder if you don't have anybody they can point a gun to and tell to stop the ship.
The city of Ghent was eyeing autonomous small crafts as "water taxis", and a big shipping provider wanted to do last-mile(s) delivery for shops, restaurants, and small parcel pickup points along a river. For the latter case, the vessel would still be manned, but instead of having to navigate, that person could sort and prepare parcels for delivery.
Also, a significant amount of money is spent providing 24 hour cover of navigation in the bridge so I guess you could save something by automating a lot of it.
You are probably right that in the extreme, it would be better to have some humans to make sure your containers make it to their destination!
By coincidence, they also had an experiment in Amsterdam.
Note: Friends of me.
tell your friends I'm rooting for them thats an interesting project